Bre*_*arn 67 python csv pandas
我正在使用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
Run Code Online (Sandbox Code Playgroud)
它正确地写着"男"为字符串"南",但仍读取空单元格作为NaN的.我想传递str的converters参数read_csv(带converters={'One': str})),但它仍然读取空单元格作为NaN的.
我知道读书,和fillna后,我可以填补值,但真的没有办法告诉大家,在一个特定的CSV列空单元格应该被解读为空字符串,而不是NaN的熊猫吗?
nea*_*mcb 65
阅读其他答案和评论后,我仍然感到困惑.但现在答案似乎更简单,所以你走了.
自Pandas 0.9版(2012年起)以来,您可以通过简单设置来读取空单元格被解释为空字符串的csv keep_default_na=False:
pd.read_csv('test.csv', keep_default_na=False)
Run Code Online (Sandbox Code Playgroud)
这个问题在下面有更清楚的解释
这是在2012年8月19日为Pandas 0.9版本修复的
Wes*_*ney 41
我添加了一张票,在这里添加一些选项:
https://github.com/pydata/pandas/issues/1450
在此期间,result.fillna('')应该做你想做的事
编辑:在开发版本(最终为0.8.0)如果指定一个空列表na_values,空字符串将在结果中保留空字符串
buh*_*htz 11
pandas默认情况下定义为缺失值的内容read_csv()可以在此处找到。
import pandas
default_missing = pandas._libs.parsers.STR_NA_VALUES
print(default_missing)
Run Code Online (Sandbox Code Playgroud)
输出
{'', '<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'}
Run Code Online (Sandbox Code Playgroud)
这样您就可以选择退出。
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)
Run Code Online (Sandbox Code Playgroud)
小智 10
我们在 Pandas 中有一个简单的论点 read_csv():
用:
df = pd.read_csv('test.csv', na_filter= False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66061 次 |
| 最近记录: |