python - 按条件替换熊猫数据框列中的值
问题描述
给定两个示例数据框:
df0 = pd.DataFrame([('a', 1, 1000),
('b', 2, 1200),
('d', 100, 1500)],
columns=['L','A','ADA'])
df1 = pd.DataFrame([('a', 1, 2, 1000),
('b', 2, 100, 1200),
('d', 100, 2, 1500)],
columns=['L','A','A','ADA'])
A
如果值大于 ,我想替换所有列中的值10
。
片段
df = df0
df.loc[df['A'] > 10, 'A'] = np.nan
完美地工作,而同样适用于第二个数据框则不起作用
df = df1
df.loc[df['A'] > 10, 'A'] = np.nan
因为df['A']
返回两列。
有什么方法可以同时处理这两种情况吗?
虽然重命名列是一种选择(我宁愿不这样做),但这就是数据的格式(我无法控制),在实际代码库中重命名数据会导致许多问题。我正在寻找可以处理这种情况的解决方案。
如果有两个同名的列是一个问题,熊猫接受这个的原因是什么?
解决方案
您可以使用numpy.where
替换所有duplicate
列:
In [2405]: df1
Out[2405]:
L A A ADA
0 a 1 2 1000
1 b 2 100 1200
2 d 100 2 1500
In [2405]: import numpy as np
In [2406]: df1.A = np.where(df1.A.gt(10), np.nan, df1.A)
In [2407]: df1
Out[2407]:
L A A ADA
0 a 1.0 2.0 1000
1 b 2.0 NaN 1200
2 d NaN 2.0 1500
推荐阅读
- java - UseConcMarkSweepGC 已被弃用,它的替代品是什么?
- mysql - SQL组合2个没有主键的表
- python - Python matplotlib直方图很慢
- java - MongoDB存储随机数据
- c++ - 如何允许通配符模板参数
- python - 我想用 django 在 htm 文件中导入 python 代码
- android - Android 将数据从 IntentService 发送到绑定的 Activity
- r - 尝试在 R 中实现套索时出现“参数 Y 缺失”?
- php - MySQL & Eloquent 查询
- apache - NiFi GenerateTableFetch 不存储每个 database.name 的状态