我有一个pandas数据帧。我想创建另一个数据帧,哪些列将是第一帧中所选列的总和。
例如,在第一个数据框中,我有名为'A'
,'B'
,'C'
和'D'
的列。新列'X'
和'Y'
以及'X'
必须是'A'
,'B'
和'C'
以及'Y'
包含的总和只有1个}}。 "映射"可以保存在字典中:'D'
,但不一定非必要。
我应该使用密钥{'X': ['A', 'B', 'C'], Y: ['D']}
和'X'
初始化空数据框,然后添加列还是有更快的方法?
答案 0 :(得分:2)
您可以直接使用其中的数据初始化DataFrame:
df2 = pd.DataFrame({'X': df[['A', 'B', 'C']].sum(axis=1), 'Y': df['D']})
或者您可以逐列构建它:
df2 = df[['A', 'B', 'C']].sum(axis=1).to_frame(name='X')
df2['Y'] = df['D']
对于第一列,您需要使用to_frame
作为所需的列名称来呼叫name
。否则,df2
将是系列而不是数据框,您在添加列时会遇到问题。在初始列之后,您可以像往常一样分配列。
示例输入:
df = pd.DataFrame({'A':[3,1,4],'B':[1,5,9],'C':[2,6,5],'D':[3,5,8]})
A B C D
0 3 1 2 3
1 1 5 6 5
2 4 9 5 8
示例输出(对于任一方法):
X Y
0 6 3
1 12 5
2 18 8