python-3.x - 将列更改为数据
问题描述
我有一个数据库:
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。
解决方案
用于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
推荐阅读
- c# - 将带有类的字典保存到文件
- python - 如何在python中的函数内创建模块级全局变量
- iis - URL重写导致重定向你太多次
- node.js - puppeteer 在谷歌应用引擎的生产中发送错误 500
- javascript - 如何添加样式或类名并从 Web 组件中删除其他元素?
- intellij-idea - IntelliJ IDEA 内部错误“Equal objects must have equal hashcodes”(作者 Trove)
- sql - 重用 T-SQL FOR JSON 子查询
- java - 图中的“CPU”代表“核心”吗?
- docker - Docker:浏览到主机上的容器不起作用
- angular - 从组件服务之间的共享数据中获取数据时未定义数据