给定两个示例数据帧:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句