相关疑难解决方法(0)

获取pandas.read_csv将空值读取为空字符串而不是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
Run Code Online (Sandbox Code Playgroud)

它正确地写着"男"为字符串"南",但仍读取空单元格作为NaN的.我想传递strconverters参数read_csv(带converters={'One': str})),但它仍然读取空单元格作为NaN的.

我知道读书,和fillna后,我可以填补值,但真的没有办法告诉大家,在一个特定的CSV列空单元格应该被解读为空字符串,而不是NaN的熊猫吗?

python csv pandas

67
推荐指数
4
解决办法
7万
查看次数

Pandas read_csv dtype指定除一个之外的所有列

我有一个CSV文件.我希望读取的大部分值都是字符串,但如果具有给定标题的列存在,我想将列读为bool.

因为CSV文件有很多列,所以我不想直接在每列上指定数据类型,并给出如下内容:

data = read_csv('sample.csv', dtype={'A': str, 'B': str, ..., 'X': bool})
Run Code Online (Sandbox Code Playgroud)

是否可以在每列上定义字符串类型但是同时将可选列作为bool读取?

我目前的解决方案是以下(但它非常低效和缓慢):

data = read_csv('sample.csv', dtype=str) # reads all column as string
if 'X' in data.columns:
    l = lambda row: True if row['X'] == 'True' else False if row['X'] == 'False' else None
    data['X'] = data.apply(l, axis=1)
Run Code Online (Sandbox Code Playgroud)

更新:样本CSV:

A;B;C;X
a1;b1;c1;True
a2;b2;c2;False
a3;b3;c3;True
Run Code Online (Sandbox Code Playgroud)

或者同样可以没有'X'列(因为列是可选的):

A;B;C
a1;b1;c1
a2;b2;c2
a3;b3;c3
Run Code Online (Sandbox Code Playgroud)

python csv dataframe pandas

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

csv ×2

pandas ×2

python ×2

dataframe ×1