我有一个熊猫数据框,有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功能是
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然后必须根据进行最终分类
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。
pd.DataFrame.sort
pd.DataFrame.sort_values