我想读入一个csv文件,并将类似数字的列中的空格视为nan值,将类似字符串的列中的空格视为空字符串。最好我不想提前知道关于列的任何事情。
输入test.csv
:
StrCol,FloatCol
a,1.0
b,1.1
,1.2
d,
e,1.3
字符串
所需输出DataFrame:
StrCol FloatCol
0 a 1.0
1 b 1.1
2 1.2
3 d NaN
4 e 1.3
型
我在这个案例中找到的代码是
df = pd.read_csv("test.csv")
sc = [c for c, dt in df.dtypes.items() if dt == object]
df.loc[:, sc] = df.loc[:, sc].fillna('')
型
我只是想知道有没有更优雅的解决方案。对我来说,只有将NaN放在类似数字的列中才是读取csv的直观方式,所以我想知道是否有一个read_csv参数可以给予这种效果。
2条答案
按热度按时间t5zmwmid1#
不幸的是没有如果您想从数据类型的自动检测中获益,则不需要。
如果在数字列中有NaN(或任何字符串),则可以用途:
字符串
但是在这里,空字符串对于自动定义数字列很重要。
在您的情况下,这将错误地将所有内容设置为object:
型
另一种方法(仍然是相同的逻辑):
型
输出量:
型
hpcdzsge2#
下面是更精确的代码:
字符串