下面的代码生成一个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|
+---+---+---------------------+---+------+---+
- 所有的日期都变成了大数字
- 甚至
NaT和NaN都被替换了,这是我不想要的
我如何才能正确有效地实现这一点
这就足够了
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