Pandas条件列添加

时间:2018-05-17 17:12:21

标签: python pandas dataframe

我有这样的数据框:

>>df 
L1      L0        desc_L0 
4956    10         Hi
1509    nan        I  am 
1510    20         Here 
1511    nan        where r u ?

我希望在desc_L1的值为空且同一时间将L0值移至desc_L0时插入新列desc_L1

期望的输出:

L1      L0       desc_L0      desc_L1
4956    10       Hi           nan
1509    nan      nan          I  am 
1510    20      Here          nan
1511    nan      nan          where r u ?

如何以pythonic方式完成此操作?

2 个答案:

答案 0 :(得分:1)

首先复制你的系列:

df['desc_L1'] = df['desc_L0']

然后使用掩码更新两个系列:

mask = df['L1'].isnull()
df.loc[~mask, 'desc_L1'] = np.nan
df.loc[mask, 'desc_L0'] = np.nan

答案 1 :(得分:0)

您可以尝试:

df['desc_L1'] = df['desc_L0']
df['desc_L1'] = np.where(df['L0'].isna(), df['desc_L0'], np.NaN)
df['desc_L0'] = np.where(df['L0'].isna(), np.NaN, df['desc_L0'])

输入:

     L0       desc_L0
0  10.0            hi
1   NaN          I am
2  20.0          Here
3   NaN  where are u?

输出:

     L0 desc_L0       desc_L1
0  10.0      hi           NaN
1   NaN     NaN          I am
2  20.0    Here           NaN
3   NaN     NaN  where are u?