gpt4 book ai didi

python - 使用 Pandas.DataFrame.replace() 用 NaN 替换空字符串时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:36 26 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中有一些带有空字符串的观察结果,我想将其替换为 NaN (np.nan)。

我使用

成功地替换了这些空字符串中的大部分
df.replace(r'\s+',np.nan,regex=True).replace('',np.nan)

但我仍然发现空字符串。例如,当我运行

sub_df = df[df['OBJECT_COL'] == '']
sub_df.replace(r'\s+', np.nan, regex = True)
print(sub_df['OBJECT_COL'] == '')

输出全部返回True

我应该尝试其他方法吗?有没有办法读取这些单元格的编码,这样我的 .replace() 可能因为编码很奇怪而无效?

最佳答案

另一种选择。

sub_df.replace(r'^\s+$', np.nan, regex=True)

或者,用空格替换空字符串和记录

sub.df.replace(r'^\s*$', np.nan, regex=True)

备选方案:

apply() 与函数 lambda 结合使用。

sub_df.apply(lambda x: x.str.strip()).replace('', np.nan)

只是示例说明:

>>> import numpy as np
>>> import pandas as pd

具有空字符串和空格的示例 DataFrame..

>>> sub_df
col_A
0
1
2 somevalue
3 othervalue
4

针对不同情况应用的解决方案:

最佳解决方案:

1)

>>> sub_df.replace(r'\s+',np.nan,regex=True).replace('',np.nan)
col_A
0 NaN
1 NaN
2 somevalue
3 othervalue
4 NaN

2) 这对两种情况都有效,但部分无效:

>>> sub_df.replace(r'^\s+$', np.nan, regex=True)
col_A
0
1 NaN
2 somevalue
3 othervalue
4 NaN

3) 这也适用于这两种情况。

>>> sub_df.replace(r'^\s*$', np.nan, regex=True)

col_A
0 NaN
1 NaN
2 somevalue
3 othervalue
4 NaN

4) 这也适用于这两种情况。

>>> sub_df.apply(lambda x: x.str.strip()).replace('', np.nan)
col_A
0 NaN
1 NaN
2 somevalue
3 othervalue
4 NaN

关于python - 使用 Pandas.DataFrame.replace() 用 NaN 替换空字符串时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54390606/

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