gpt4 book ai didi

python - 替换 Pandas 数据框中任何列中的值

转载 作者:太空狗 更新时间:2023-10-30 01:47:56 25 4
gpt4 key购买 nike

在下面的数据框中:

 T2MN   T2MX   RH2M DFP2M RAIN 
6.96 9.32 84.27 5.57 -
6.31 10.46 - 5.63 -
- 10.66 79.38 3.63 -
0.79 4.45 94.24 1.85 -
1.45 3.99 91.71 1.17 -

如何将所有 - 替换为 NaN。我不想指定列名,因为我事先不知道哪个列将包含 -

最佳答案

如果这些是字符串,那么您的 float 可能也是字符串。

假设您的数据框是df,我会尝试

pd.to_numeric(df.stack(), 'coerce').unstack()

更深入的解释

Pandas 通常不会用 '-' 表示缺失的 float 。因此,'-' 必须是一个字符串。因此,其中包含 '-' 的任何列的 dtype 必须是 'object'。这使得很可能无论什么解析数据,都将 float 保留为字符串。

设置

from io import StringIO
import pandas as pd

txt = """T2MN T2MX RH2M DFP2M RAIN
6.96 9.32 84.27 5.57 -
6.31 10.46 - 5.63 -
- 10.66 79.38 3.63 -
0.79 4.45 94.24 1.85 -
1.45 3.99 91.71 1.17 - """

df = pd.read_csv(StringIO(txt), delim_whitespace=True)
print(df)

T2MN T2MX RH2M DFP2M RAIN
0 6.96 9.32 84.27 5.57 -
1 6.31 10.46 - 5.63 -
2 - 10.66 79.38 3.63 -
3 0.79 4.45 94.24 1.85 -
4 1.45 3.99 91.71 1.17 -

dtypes 是什么?

print(df.dtypes)

T2MN object
T2MX float64
RH2M object
DFP2M float64
RAIN object
dtype: object

第一个元素的类型是什么?

print(type(df.iloc[0, 0]))

<class 'str'>

这意味着任何带有 '-' 的列都像是一列看起来像 float 的字符串。您想要使用带有参数 errors='coerce'pd.to_numeric 来强制将非数字项目转换为 np.nan。但是,pd.to_numeric 不会在 pd.DataFrame 上运行,因此我们可以堆叠取消堆叠

pd.to_numeric(df.stack(), 'coerce').unstack()

T2MN T2MX RH2M DFP2M RAIN
0 6.96 9.32 84.27 5.57 NaN
1 6.31 10.46 NaN 5.63 NaN
2 NaN 10.66 79.38 3.63 NaN
3 0.79 4.45 94.24 1.85 NaN
4 1.45 3.99 91.71 1.17 NaN

关于python - 替换 Pandas 数据框中任何列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42172204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com