我有两个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)
我能做些什么来实现这个目标?
答案 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])