我有一个pandas数据帧。我想制作另一个数据帧,其中的列将是第一帧中所选列的总和。
例如,在第一个数据帧中,我有名为'A'
、'B'
、'C'
和'D'
的列。新列为'X'
、'Y'
和'X'
必须是它们的'A'
、'B'
和'C'
的和,而'Y'
只包含'D'
。"映射"可以保存在字典{'X': ['A', 'B', 'C'], Y: ['D']}
中,但不一定需要。
我应该用键'X'
和'Y'
初始化空数据帧,然后添加列吗?或者有更快的方法吗?
您可以直接初始化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']
对于第一列,您需要使用name
作为所需列名来调用to_frame
。否则,df2
将是一个系列而不是DataFrame,并且添加列时会遇到问题。在初始列之后,您可以像往常一样分配列。
样本输入:
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