【发布时间】:2021-03-03 23:59:04
【问题描述】:
import pandas as pd
import numpy as np
df = pd.DataFrame(
[
[np.nan, 'None', 3],
[np.nan, 5, 6],
[7, 8, 9]
], columns=['a', 'b', 'c']
)
df.replace({np.nan: None}, inplace=True)
print(df)
df.replace({'None': None}, inplace=True)
print(df)
a b c
0 None None 3
1 None 5 6
2 7 8 9
a b c
0 NaN NaN 3
1 NaN 5.0 6
2 7.0 8.0 9
这是我的案例的小例子。 我想将nan,“None”替换为None。所以我用了两次替换 第一个替换方法像我想的那样工作得很好,但是 nan 在第二个替换中重生了,所有的 int 都因为 nan 而变成了 float。我不知道为什么 nan 重生 df.replace({'None': None}, inplace=True),我该如何解决?
【问题讨论】:
-
如果
df.replace({'None': np.nan}, inplace=True)怎么办? -
你需要可以为空的 int dtype:
df.replace({'None': None}).astype(pd.Int64Dtype()), docs -
请问您为什么要使用 None 而不是 NaN?在大多数情况下,NaN 是指示 DataFrame 中缺失值的最佳方式。
-
@wwnde 它不起作用。
-
@anky 我最后只使用“Int64”。