python pandas,某些列到行[重复]
这个问题已经在这里有了答案 :
熊猫将一些列转换为行 (4个答案)
2年前关闭。
我有一个熊猫数据框,有4行4列-这是asimple版本:
import pandas as pd
import numpy as np
rows = np.arange(1, 4, 1)
values = np.arange(1, 17).reshape(4,4)
df = pd.DataFrame(values, index=rows, columns=['A', 'B', 'C', 'D'])
我想做的是将其转换为2 * 8数据帧,并对每个数组使用B,C和D Alligng-因此它看起来像这样:
1 2
1 3
1 4
5 6
5 7
5 8
9 10
9 11
9 12
13 14
13 15
13 16
在阅读熊猫文档时,我尝试了以下方法:
df1 = pd.pivot_table(df, rows = ['B', 'C', 'D'], cols = 'A')
但给我一个错误,我无法识别来源(结尾为
DataError:没有要聚合的数字类型
)
接下来,我想基于A值拆分数据帧,但是我认为.groupby命令可能会照顾好它
-
您正在寻找的
melt
功能是pd.melt(df,id_vars=['A']) A variable value 0 1 B 2 1 5 B 6 2 9 B 10 3 13 B 14 4 1 C 3 5 5 C 7 6 9 C 11 7 13 C 15 8 1 D 4 9 5 D 8 10 9 D 12 11 13 D 16
A
然后必须根据进行最终分类pd.melt(df,id_vars=['A']).sort('A') A variable value 0 1 B 2 4 1 C 3 8 1 D 4 1 5 B 6 5 5 C 7 9 5 D 8 2 9 B 10 6 9 C 11 10 9 D 12 3 13 B 14 7 13 C 15 11 13 D 16
注 :
pd.DataFrame.sort
已弃用赞成pd.DataFrame.sort_values
。