Python 根据其他两列的条件创建新列

Python 根据其他两列的条件创建新列,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个连接的数据帧,它有两个相同的列和两个不同的名称 看起来是这样的: Fuel Category Gen MW Gen MWh Time Stamp Time Zone Dual Fuel 2809.0 nan 12/09/2015 00:05 EST Hydro 2224.0 nan 12/09/2015 00:05 EST Natural Gas nan

我有一个连接的数据帧,它有两个相同的列和两个不同的名称

看起来是这样的:

Fuel Category     Gen MW    Gen MWh  Time Stamp        Time Zone
Dual Fuel         2809.0    nan      12/09/2015 00:05   EST
Hydro             2224.0    nan      12/09/2015 00:05   EST
Natural Gas       nan       150.00   12/09/2016 00:05   EST
Nuclear           4787.0    nan      12/09/2015 00:05   EST
Other Fossil      nan       20.0     12/09/2016 00:05   EST
问题是,一个标题被称为
Gen-MWh
,另一个标题被称为
Gen-MW
,用于不同的时间段。我只想换一个新的栏目,在
df['Gen new MW']
=
df[Gen MW]
when
df['Gen MWh']='nan'
和=
df[Gen MWh]
时填写

我试过:

for i in range(0, len(df)):
    if df['Gen MW'].iloc[i] == 'nan':
        df['Generation (MW)'].iloc[i] == df['Gen MWh'].iloc[i]

    elif df['Gen MWh'].iloc[i] == 'nan':
        df['Generation (MW)'].iloc[i] == df['Gen MW'].iloc[i]
但这会反复进行,并且不会产生任何结果


有什么方法可以轻松做到这一点吗?

首先使用combine_或@piRsquared建议的fillna

df['Gen New MW'] = df['Gen MW'].combine_first(df['Gen MWh'])

df['Gen New MW']

0    2809.0
1    2224.0
2     150.0
3    4787.0
4      20.0
备选案文2:

df['Gen New MW'] = df['Gen MW'].fillna(df['Gen MWh'])

按照@piRsquared的建议,首先使用combine_或fillna

df['Gen New MW'] = df['Gen MW'].combine_first(df['Gen MWh'])

df['Gen New MW']

0    2809.0
1    2224.0
2     150.0
3    4787.0
4      20.0
备选案文2:

df['Gen New MW'] = df['Gen MW'].fillna(df['Gen MWh'])

或者
df['Gen MW'].fillna(df['Gen MWh'])
@piRSquared,好久不见!是的,一直很忙(:或
df['Gen MW'])。fillna(df['Gen MWh'])
@piRSquared,很久了!是的,一直很忙(:我觉得这是一个反复出现的问题。我觉得这是一个反复出现的问题。