gpt4 book ai didi

python - 多个 Pandas 列

转载 作者:太空宇宙 更新时间:2023-11-04 07:56:13 24 4
gpt4 key购买 nike

如果 pandas 数据框有 4 列,如下所示:

      A     B     C     D     

0 2 4 1 9
1 3 2 9 7
2 1 6 9 2
3 8 6 5 4

是否有可能以某种方式应用 df.cumsum() 以在现有列旁边的新列中获取结果,如下所示:

      A     AA    B     BB     C     CC     D     DD

0 2 2 4 4 1 1 9 9
1 3 5 2 6 9 10 7 16
2 1 6 6 12 9 19 2 18
3 8 14 6 18 5 24 4 22

最佳答案

您可以使用 assign 创建新列:

result = df.assign(**{col*2:df[col].cumsum() for col in df})

并使用 sort_index 对列进行排序:

result.sort_index(axis=1)
# A AA B BB C CC D DD
# 0 2 2 4 4 1 1 9 9
# 1 3 5 2 6 9 10 7 16
# 2 1 6 6 12 9 19 2 18
# 3 8 14 6 18 5 24 4 22

请注意,根据列名,排序可能不会产生所需的顺序。在这种情况下,使用 reindex是确保您获得所需列顺序的更可靠方法:

result = df.assign(**{col*2:df[col].cumsum() for col in df})
result = result.reindex(columns=[item for col in df for item in (col, col*2)])

这是一个演示差异的示例:

import pandas as pd
df = pd.DataFrame({'A': [2, 3, 1, 8], 'A A': [4, 2, 6, 6], 'C': [1, 9, 9, 5], 'D': [9, 7, 2, 4]})

result = df.assign(**{col*2:df[col].cumsum() for col in df})
print(result.sort_index(axis=1))
# A A A A AA A AA C CC D DD
# 0 2 4 4 2 1 1 9 9
# 1 3 2 6 5 9 10 7 16
# 2 1 6 12 6 9 19 2 18
# 3 8 6 18 14 5 24 4 22

result = result.reindex(columns=[item for col in df for item in (col, col*2)])
print(result)
# A AA A A A AA A C CC D DD
# 0 2 2 4 4 1 1 9 9
# 1 3 5 2 6 9 10 7 16
# 2 1 6 6 12 9 19 2 18
# 3 8 14 6 18 5 24 4 22

关于python - 多个 Pandas 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48348782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com