我在重新排列python中的数据帧时遇到了问题,这是从CSV文件到我需要它的方式。数据框中的数据是这样的:
ID VOLUME DATETIME
900 2.36 11/01/2015 13:40
900 2.30 11/01/2015 13:40
900 2.18 11/01/2015 13:41
900 2.30 11/01/2015 13:41
901 1.88 07/01/2015 17:01
901 1.80 07/01/2015 17:01
901 1.73 07/01/2015 17:02
901 1.80 07/01/2015 17:02
我已尝试各种方法将上述内容转移到我需要的方式,但由于字段没有真正的唯一值,我无法做到。我一直在想我需要用iterrows来得到它我需要的东西但是还没有能够解决它。 这就是我想要获取数据的方式:
900↓ 901↓
2.36 1.88
2.30 1.80
2.18 1.73
2.30 1.80
我正在尝试在ID列中显示每个项目的一列,但我真的开始在这一列上撞到墙上。我可以像上面那样创建一个新的数据帧,还是以错误的方式解决这个问题?
答案 0 :(得分:0)
当您的ID具有不同的行数时,解决方案:
In [34]: df
Out[34]:
ID VOLUME DATETIME
0 900 2.36 11/01/2015 13:40
1 900 2.30 11/01/2015 13:40
2 900 2.18 11/01/2015 13:41
3 900 2.30 11/01/2015 13:41
4 901 1.88 07/01/2015 17:01
5 901 1.80 07/01/2015 17:01
6 901 1.73 07/01/2015 17:02
7 901 1.80 07/01/2015 17:02
8 901 1.11 07/01/2015 17:03 # NOTE: i've intentionally added this row
In [35]: pd.DataFrame({k : pd.Series(v)
for k, v in df.groupby('ID').VOLUME.apply(list).to_dict().items()})
Out[35]:
900 901
0 2.36 1.88
1 2.30 1.80
2 2.18 1.73
3 2.30 1.80
4 NaN 1.11
OLD回答:
试试这个:
In [12]: pd.DataFrame(df.groupby('ID').VOLUME.apply(list).to_dict())
Out[12]:
900 901
0 2.36 1.88
1 2.30 1.80
2 2.18 1.73
3 2.30 1.80
或:
In [18]: pd.DataFrame(df.groupby('ID').VOLUME.apply(lambda x: x.values).to_dict())
Out[18]:
900 901
0 2.36 1.88
1 2.30 1.80
2 2.18 1.73
3 2.30 1.80
注意:如果您的所有ID