提问人:BrenBarn 提问时间:6/3/2012 最后编辑:piRSquaredBrenBarn 更新时间:3/3/2023 访问量:209611
获取pandas.read_csv以将空值读取为空字符串而不是 nan
Get pandas.read_csv to read empty values as empty string instead of nan
问:
我正在使用 pandas 库读取一些 CSV 数据。在我的数据中,某些列包含字符串。字符串是可能的值,空字符串也是。我设法让熊猫将“nan”读为字符串,但我不知道如何让它不将空值读取为 NaN。下面是示例数据和输出"nan"
One,Two,Three
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven
>>> pandas.read_csv('test.csv', na_values={'One': [], "Three": []})
One Two Three
0 a 1 one
1 b 2 two
2 NaN 3 three
3 d 4 nan
4 e 5 five
5 nan 6 NaN
6 g 7 seven
它正确地将“nan”读取为字符串“nan”,但仍将空单元格读取为 NaN。我尝试将参数传入 read_csv (with ),但它仍然将空单元格读取为 NaN。str
converters
converters={'One': str})
我意识到我可以在阅读后用 fillna 填充值,但是真的没有办法告诉 pandas 特定 CSV 列中的空单元格应该读为空字符串而不是 NaN 吗?
答:
我添加了一张票,以在此处添加某种选项:
https://github.com/pydata/pandas/issues/1450
同时,应该做你想做的事result.fillna('')
编辑:在开发版本(最终版本为 0.8.0)中,如果您指定一个空列表,则空字符串将在结果中保持空字符串na_values
评论
DataFrame.fillna
的文档。尝试。否则,它将创建数据帧的副本。result.fillna('', inplace=True)
na_values
keep_default_na
keep_default_na
pandas.read_csv('test.csv',na_values=['nan'], keep_default_na=False)
keep_default_na
keep_default_na=False
看完其他答案和评论后,我仍然感到困惑。但现在答案似乎更简单了,所以你开始吧。
从 Pandas 版本 0.9(从 2012 年开始)开始,您只需设置以下内容即可读取被解释为空字符串的空单元格的 csv:keep_default_na=False
pd.read_csv('test.csv', keep_default_na=False)
这个问题在
2012 年 8 月 19 日,Pandas 版本 0.9 在
评论
我们在 Pandas read_csv()
中有一个简单的参数:
用:
df = pd.read_csv('test.csv', na_filter= False)
评论
na_values
na_filter
keep_default_na=False
na_filter=False
默认情况下定义为缺失值的内容可以在这里找到。pandas
read_csv()
import pandas
default_missing = pandas._libs.parsers.STR_NA_VALUES
print(default_missing)
输出
{'', '<NA>', 'nan', '1.#QNAN', 'NA', 'null', 'n/a', '-nan', '1.#IND', '#N/A N/A', 'N/A', 'NULL', 'NaN', '-1.#IND', '-1.#QNAN', '#NA', '#N/A', '-NaN'}
有了它,您可以选择退出。
import pandas
default_missing = pandas._libs.parsers.STR_NA_VALUES
default_missing = default_missing.remove('')
default_missing = default_missing.remove('na')
with open('test.csv', 'r') as csv_file:
pandas.read_csv(csv_file, na_values=default_missing)
评论
a_values
na_values
如果只想保留一列的空字符串,请定义为列转换器( 将不起作用)。已使用 pandas 1.1.5 进行检查:str
dtypes
pd.read_csv('test.csv', converters={'One': str, 'Three': str})
评论
pd.read_csv( sourceObj, dtype='string')
无需其他参数。
每个列类型都是 python 原始字符串,空值变为空字符串 ''。
版本: Pandas v1.5
评论
keep_default_na
pd.read_csv( sourceObj, dtype='string' )
,则不需要其他参数。Pandas 将强制转换所有行字符串,空值将设置为空字符串 ''