如何使用Pandas完全忽略csv中的空格
我正在尝试将.csv文件制作成既易于阅读又易于熊猫阅读的格式。这意味着列应该整齐地分开,以便您可以轻松识别每个值所属的列。问题是,用空格填充它会降低熊猫功能。到目前为止,我所拥有的是
work ,roughness ,unstab ,corr_c_w ,u_star ,c_starus ,True ,True ,-0.39 ,0.35 ,-.99
wang ,False , ,-0.5 , ,
cheng , ,True , , ,
watanabe, , , ,0.15 ,-.80
如果我取出上面.csv上的所有空格,并直接将pd.read_csv
其读取,则效果很好。前两列为布尔值,其他为浮点数。但是,如果没有空格,则根本无法让人理解。当我阅读上面的.csv
pd.read_csv('bibrev.csv', index_col=0)
这是行不通的,因为显然所有的列和字符串都包含空格。当我使用
pd.read_csv('bibrev.csv', index_col=0, skipinitialspace=True)
那么这是可行的,因为浮点数被读取为浮点数,缺失值被读取为NaN
s,这是一个很大的改进。但是,列名和布尔列仍然是带空格的字符串。
有什么直接用熊猫读取.csv的方法吗?还是可能会有点csv格式,并且仍然可以通过人类可读的.csv清晰阅读?
PS
.:我试图避免使用python作为字符串读取所有内容,替换空白,然后将其提供给pandas,并且还尝试避免定义某些函数并将其通过converters
关键字传递给pandas
。
回答:
尝试这个:
import pandas as pddef booleator(col):
if str(col).lower() in ['true', 'yes']:
return True
#elif str(col).lower() == "false":
# return False
else:
return False
df = pd.read_csv('data.csv', sep='\s*,\s*', index_col=0,
converters={'roughness': booleator, 'unstab': booleator},
engine='python')
print(df)
print(df.dtypes)
输出:
roughness unstab corr_c_w u_star c_starwork
us True True -0.39 0.35 -0.99
wang False False -0.50 NaN NaN
cheng False True NaN NaN NaN
watanabe False False NaN 0.15 -0.80
roughness bool
unstab bool
corr_c_w float64
u_star float64
c_star float64
dtype: object
这个版本也照顾布尔值-所有NaN都将转换为False,否则Pandas会将dtype提升为Object(请参阅我的评论中的详细信息)…
以上是 如何使用Pandas完全忽略csv中的空格 的全部内容, 来源链接: utcz.com/qa/426750.html