从两个pandas dfs添加选定的列

时间:2018-05-02 22:00:48

标签: python pandas dataframe add

我有两个pandas数据帧a_df和b_df。 a_df具有列ID,atext和var1-var25,而b_df具有列ID,atext和var1-var 25.

我想只添加来自a_df和b_df的相应变量,并保留ID和单独的文本。

下面的代码添加了所有相应的列。有没有办法让它只添加感兴趣的列?

absum_df=a_df.add(b_df)

我能做些什么来实现这个目标?

2 个答案:

答案 0 :(得分:2)

使用filter

absum_df = a_df.filter(like='var').add(b_df.filter(like='var'))

如果您希望按原样保留其他列,请在求和后使用concat

absum_df = pd.concat([a_df[['ID', 'atext']], absum_df], axis=1)

或者,如果您要添加a_df中不在absum_df中的所有列,而不是从a_df中选择列,而不是仅删除absum_df中的列。 :

absum_df = pd.concat([a_df.drop(absum_df.columns axis=1), absum_df], axis=1)

答案 1 :(得分:1)

您可以将数据框子集到特定列:

var_columns = ['var-{}'.format(i) for i in range(1,26)]
absum_df=a_df[var_columns].add(b_df[var_columns])

请注意,这将导致数据框仅包含var列。如果你想要一个带有来自a_df的非var列的数据帧,并且var列是a_df和b_df的总和,你可以做到

absum_df = a_df.copy()
absum_df[var_columns] = a_df[var_columns].add(b_df[var_columns])