【发布时间】:2022-07-06 15:31:04
【问题描述】:
我有一个包含多列的数据框,例如 [5745 行 x 112 列]。 我想替换某些列的某些值。有很多问题需要解决非常相似的问题,但我没有找到适合我的解决方案。
背景:我使用 pcolormesh 在 Bokeh 中绘制我的数据框。当具有“0”值时,网格将“0”值绘制为白色字段颜色。这会刺激视觉解释。因此,我想用一个非常小的值替换这些零,比如说 1e-15。 然后 Pcolormesh 使用地图的第一种颜色绘制这些字段。
数据集中带有“0”的 Pcolormesh 图: 带有“0”的 Pcolormesh 图替换为非常
1e-15 之类的小值:
以下是一个非常小的示例数据框,用于测试和理解 porposes - 对于真正的巨大数据框,我不想提及所有列名,所以我尝试使用 'iloc':
import pandas as pd
df = pd.DataFrame({'a':[1, 0, 2, 3],
'b':[3, 1, 1, 1],
'c':[1, 2, 1, 0],
'd':[2, 1, 0, 0],
'e':[1, 0, 0, 0],
'f':[1, 1, 0, 1],
'g':[1, 1, 0, 0],
'h':[0, 0, 0, 0]})
df.iloc[:,-4:-1][df.iloc[:,-4:-1]< 1e-15] = 1e-15
df
导致警告:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
但据我了解,只要我不写特定的列名,'loc' 就不起作用(我不想要 - 这些在真实数据框中太多了)。并且警告也出现了,因为“iloc”在操作方面无法替换数据框的值。
这就是为什么我试图用“替换”来真正替换(实际上是操纵)我的数据帧的值,根据熊猫的描述,它应该适用于数据帧
df[:,-4:-1] = df[:,-4:-1].replace(< 1e-15, =1e-15, inplace=True)
导致语法错误:
df[:,-4:-1] = df[:,-4:-1].replace(< 1e-15, =1e-15, inplace=True)
^
SyntaxError: invalid syntax
或
df.replace({-4:-1}(to_replace[:,-4:-1]< 1e-15), 1e-15)
导致名称错误的原因:
df.replace({-4:-1}(to_replace[:,-4:-1]< 1e-15), 1e-15)
NameError: name 'to_replace' is not defined
我确定只是拼写错误,但我没有找到。看到了吗?
谢谢!
【问题讨论】:
标签: python pandas dataframe replace