我正在寻找一种完成以下任务的快速方法:

假设我有以下数据框:

            value
index
    1        'a'
    2        'b'
    3        'c'
    4        'd'


我想将其扩展到以下数据框:

            value    cum_value
index
    1        'a'     []
    2        'b'     ['a']
    3        'c'     ['a', 'b']
    4        'd'     ['a', 'b', 'c']


解决问题的最有效方式是什么?

最佳答案

将列转换为值列表并移位。这会使第一个元素变为NaN,但是我们可以使用df.at将此值更改为空列表。

df = pd.DataFrame(['a', 'bb', 'hi mom', 'this is a test'])

df[1] = df[0].apply(lambda x: [x]).shift()
df.at[0,1] = []
df[1] = df[1].cumsum()

print(df)
                0                1
0               a               []
1              bb              [a]
2          hi mom          [a, bb]
3  this is a test  [a, bb, hi mom]

10-06 07:07
查看更多