Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从数据帧的一列或多列生成有序序列的最佳方法?_Python_Pandas - Fatal编程技术网

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美分。。。