假设以下DataFrame:
A B C D E F
0 d1 10 d11 10 d21 10
1 d2 30 d12 30 d22 30
2 d3 40 d13 40 d23 40
3 d4 105 d14 105 d24 105
4 d5 10 d15 10 d25 10
5 d6 30 d16 30 d26 30
6 d7 40 d17 40 d27 40
7 d8 10 d18 10 d28 10
8 d9 5 d19 5 d29 5
9 d10 10 d20 10 d30 10
如何将所有描述合并到与各自值关联的单个列中?
description value
0 d1 10
1 d2 30
2 d3 40
3 d4 105
4 d5 10
5 d6 30
6 d7 40
7 d8 10
8 d9 5
9 d10 10
10 d11 10
11 d12 30
12 d13 40
13 d14 105
14 d15 10
15 d16 30
16 d17 40
17 d18 10
18 d19 5
19 d20 10
20 d21 10
21 d22 30
22 d23 40
23 d24 105
24 d25 10
25 d26 30
26 d27 40
27 d28 10
28 d29 5
29 d30 10
请注意,原始数据帧的某些描述可能具有空白值和描述
我试过了
pd.melt( id_vars=['A','C','E'], value_vars=['B','D','F'])
但是没有得到我想要的结果
最佳答案
您可以先通过iloc
选择配对和取消配对列,通过values
创建numpy数组,通过ravel
进行转置和展平:
a = df.iloc[:, ::2].values.T.ravel()
b = df.iloc[:, 1::2].values.T.ravel()
或者,如果需要按列名称选择值:
a = df[['A','C','E']].values.T.ravel()
b = df[['B','D','F']].values.T.ravel()
最后使用
DataFrame
构造函数:df = pd.DataFrame({'description': a, 'value':b})
print (df.head(10))
description value
0 d1 10
1 d2 30
2 d3 40
3 d4 105
4 d5 10
5 d6 30
6 d7 40
7 d8 10
8 d9 5
9 d10 10
关于python - 将多个索引展平为单个列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47226867/