结合两列pandas数据帧

问题描述 投票:2回答:3

我有15个csv文件,其中一列代表年份。问题是year列在某些文件中被命名为'year'而在另一个文件中被命名为'year_'。所以我有两列对我有相同的信息,但由于每个文件只有一个列名(年份或年份),如果第1行的值为'year','year_'有NaN。我想将这两列合并,以便我可以摆脱NaN。做这个的最好方式是什么?

之前

       year     year_
 1     NaN      1999
 2     2002     NaN
 3     2000     NaN
 .
 .
 .
 N     NaN      2004

我希望这样

       year
 1     1999
 2     2002
 3     2000
 .
 .
 .
 N     2004
python-2.7 pandas dataframe
3个回答
4
投票

你可以使用combine_first功能。

df['YEAR'] = df['year'].combine_first(df['year_'])

其中df['year']将是默认值,df['year2']将用于填充空值。


2
投票

鉴于只有一个具有有效值,您可以简单地在轴1上求和它们

year_cols = df.columns[df.columns.str.contains('year')]
df['year'] = df[year_cols].sum(1)

0
投票

@Vaishali相同的想法:你可以将年份列相加;使用filter选择列:

df.filter(like='year').sum(axis=1)
© www.soinside.com 2019 - 2024. All rights reserved.