Python 从数据帧的一列或多列生成有序序列的最佳方法?
假设我有以下数据帧:Python 从数据帧的一列或多列生成有序序列的最佳方法?,python,pandas,Python,Pandas,假设我有以下数据帧: Name Day Earnings Aaron 1 100 Aaron 3 250 Aaron 4 125 Bill 2 55 Bill 3 62 Bill 5 1000 因此,我想以以下方式结束: Name Series Aaron [1:100, 2:0, 3:250, 4:125] Bill [1:0, 2:
Name Day Earnings
Aaron 1 100
Aaron 3 250
Aaron 4 125
Bill 2 55
Bill 3 62
Bill 5 1000
因此,我想以以下方式结束:
Name Series
Aaron [1:100, 2:0, 3:250, 4:125]
Bill [1:0, 2:55, 3:62, 4:0, 5:1000]
我可以用一个简单的旧apply和groupby(如果是这样的话,我无法找到正确的组合)来实现这一点吗?还是有更好的办法
到目前为止,我能得到的最接近的结果是:
>>> for Name, Info in df.groupby('Name'):
... print(zip(Info['Day'], Info['Earnings']))
...
[(1, 100), (3, 250), (4, 125)]
[(2, 55), (3, 62), (5, 1000)]
以下是我用来生成数据帧的csv:
Name,Day,Earnings
Aaron,1,100
Aaron,3,250
Aaron,4,125
Bill,2,55
Bill,3,62
Bill,5,1000
你可以这样做:
import re
import itertools
names = '''Aaron 1 100
Aaron 3 250
Aaron 4 125
Bill 2 55
Bill 3 62
Bill 5 1000'''
print [(n, map(lambda x: '%s:%s'%(x[1],x[2]), l))
for n, l in itertools.groupby(
[re.split('\W+', l)
for l in names.split('\n')], lambda x: x[0])]
你能把数据帧作为Python代码来运行吗?@roadrunner66谢谢你的评论。我如何将其作为Python代码?我在上面包含了一个csv格式。请问您为什么要这样做?在使用这种结构时,可能会导致很多问题。只要我的2美分。。。