gpt4 book ai didi

python - 如何从 CSV 文件中删除一些带有注释的行以将数据加载到 DataFrame?

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:18 25 4
gpt4 key购买 nike

有一个相对较大的包含数据的 CSV 文件(大约 80Mb)。当我在 MS Excel 中打开它时,我看到它包含 100 列和许多行数据。但是,第一行不是列名,而是一个 Web 链接。此外,最后两行是一些评论。所以,现在我想将这些数据加载到 pandas DataFrame 中:

import pandas as pd
df = pd.read_csv('myfile.csv')

然后我想读取一个名为 Duration 的列(我看到它存在于 CSV 文件中)并从它的值中删除一个单词 years:

Duration = map(lambda x: float(x.rstrip('years')), df['Duration'])

它给我这个错误:

AttributeError: 'float' object has no attribute 'rstrip'

如果我在 MS Excel 中打开文件并删除第一行(网络链接)和最后两行(注释),那么代码就可以工作了!

那么,如何在 Python 中自动清理此 CSV 文件(以仅提取具有值的列)?

更新:当我编写 print df.head() 时,它输出:

have mixed types. Specify dtype option on import or set low_memory=False.

我是否需要为所有 100 列指定类型?如果我不知道先验类型怎么办。

更新:我无法附加文件,但作为示例,您可以检查 this one .下载文件 2015-2016。

最佳答案

您应该使用 pd.read_csv() 中的一些参数:

df = pdread_csv('myfile.csv', skiprows=1, skip_footer=2)

我查看了您在评论中提供的链接并尝试导入它。我看到了两种混合数据类型(iddesc),所以我明确地为这两列设置了 dtype。此外,通过观察,页脚包含“总计”,因此我排除了以字母 T 开头的任何行。除标题外,有效行应以 id 列的整数开头。如果引入了其他不以 T 开头的页脚,这将在读取时抛出错误。

如果您先下载并解压zip文件,您可以进行如下操作:

file_loc = ...  # Specify location where you saved the unzipped file.
df = pd.read_csv(file_loc, skiprows=1, skip_blank_lines=True,
dtype={'id': int, 'desc': str}, comment='T')

这将从 emp_length 列中删除 yearyears,尽管您仍然保留文本类别。

df['emp_length'] = df.emp_length.str.replace(r'( years|year)', '')

关于python - 如何从 CSV 文件中删除一些带有注释的行以将数据加载到 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32677603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com