如何使用Pandas完全忽略csv中的空格

我正在尝试将.csv文件制作成既易于阅读又易于熊猫阅读的格式。这意味着列应该整齐地分开,以便您可以轻松识别每个值所属的列。问题是,用空格填充它会降低熊猫功能。到目前为止,我所拥有的是

work    ,roughness  ,unstab ,corr_c_w   ,u_star ,c_star

us ,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)

那么这是可行的,因为浮点数被读取为浮点数,缺失值被读取为NaNs,这是一个很大的改进。但是,列名和布尔列仍然是带空格的字符串。

有什么直接用熊猫读取.csv的方法吗?还是可能会有点csv格式,并且仍然可以通过人类可读的.csv清晰阅读?

PS

.:我试图避免使用python作为字符串读取所有内容,替换空白,然后将其提供给pandas,并且还尝试避免定义某些函数并将其通过converters关键字传递给pandas

回答:

尝试这个:

import pandas as pd

def 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_star

work

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

回到顶部