如何使用pandas将None仅替换为空字符串?

下面的代码生成一个df

将熊猫作为pd导入
从日期时间导入日期时间作为dt
将numpy作为np导入
日期=[dt(2014,1,2,2),dt(2014,1,2,3),dt(2014,1,2,4),无]
字符串1=['A','B',无,'C']
strings2=[None,'B','C','C']
strings3=['A','B','C',无]
VAL=[1,2.,np.nan,4.]
df=pd.DataFrame(dict(zip(['A','B','C','D','E',),
[strings1、日期、strings2、strings3、VAL]))
+---+------+---------------------+------+------+-----+
|| A | B | C | D | E|
+---+------+---------------------+------+------+-----+
|0 | A | 2014-01-02 02:00:00 |无| A | 1|
|1 | B | 2014-01-02 03:00:00 | B | B | 2|
|2 |无| 2014-01-02 04:00:00 | C | C | NaN|
|3 | C | NaT | C | None | 4|
+---+------+---------------------+------+------+-----+

我想用'(空字符串)替换里面的所有None(python中的realNone,而不是str)

预期的df

+---+---+---------------------+---+---+-----+
|| A | B | C | D | E|
+---+---+---------------------+---+---+-----+
|0 | A | 2014-01-02 02:00:00 | A | 1|
|1 | B | 2014-01-02 03:00:00 | B | B | 2|
|2 | | 2014-01-02 04:00:00 | C | C | NaN|
|3 | C | NaT | C | 4|
+---+---+---------------------+---+---+-----+

我所做的是

df=df.replace([None],“”),regex=True)

但是我有

+---+---+---------------------+---+------+---+
|| A | B | C | D | E|
+---+---+---------------------+---+------+---+
|0 | A | 13886280000000000000 | A | 1|
|1 | B | 13886316000000000000 | B | B | 2|
|2 | 13886352000000000 | C | C ||
|3 | C | C | 4|
+---+---+---------------------+---+------+---+

  1. 所有的日期都变成了大数字
  2. 甚至NaTNaN都被替换了,这是我不想要的

我如何才能正确有效地实现这一点

这就足够了

df.fillna(",inplace=True)
df
Output[142]:
A、B、C、D、E
0A 2014-01-02 02:00:00A 1
1b 2014-01-02 03:00:00b 2
2 2014-01-02 04:00:00 C
3 C 4

编辑2021-07-26在@dWitty的评论后完成回复

如果您真的想保留Nat和NaN值而不是文本,您只需要为文本列填充Na
在你的例子中,这是A,C,D

您只需为您的列发送替换值的dict。每个列的值可以不同。对于您的案例,您只需要构建dict

替换NA的默认值(无)
#值={quot;A:quot;,“C:quot;,“D:quot;}
值=(dict([‘A’,’C’,’D’]]on e的[e,]
df.fillna(值=值,就地=真)

df
Output[142]:
A、B、C、D、E
0A 2014-01-02 02:00:00A 1.0
1b 2014-01-02 03:00:00b 2.0
2 2014-01-02 04:00:00南
3cnatc4.0

发表评论