首页 > 解决方案 > 将列更改为数据

问题描述

我有一个数据库:

   Date          14/06/2019
0  08/06/2019    some data
1  07/06/2019    some data
2  08/06/2019    NaN
3  06/06/2019    NaN

我希望输出为:

Date
0  14/06/2019
1  14/06/2019
2  08/06/2019
3  06/06/2019

意思是,我想删除“14/06/2019”列并覆盖“Date”列的行,其中“14/06/2019”的行有一些数据,并保留“Date”列的行原样其中“14/06/2019”的行是 NaN。

标签: python-3.xpandas

解决方案


用于DataFrame.pop提取列14/06/2019,测试缺失值,Series.notna如果条件匹配,则覆盖值DataFrame.loc

df.loc[df.pop('14/06/2019').notna(), 'Date'] = "14/06/2019"

或者Series.where

df['Date'] = df['Date'].where(df.pop('14/06/2019').isna(), "14/06/2019")
#alternative with mask and notna
#df['Date'] = df['Date'].mask(df.pop('14/06/2019').notna(), "14/06/2019")

或者numpy.where

df['Date'] = np.where(df.pop('14/06/2019').notna(), "14/06/2019", df['Date'])

print (df)
         Date
0  14/06/2019
1  14/06/2019
2  08/06/2019
3  06/06/2019

推荐阅读