在Python中合并.csv文件-合并的文件数据错误-Jupyter Lab

TIW

我正在尝试合并大量的.csv文件。它们都具有相同的表格式,每个表都有60列。我的合并表导致数据正常输出,除了第一行包含640列而不是60列。合并的.csv的其余部分由所需的60列格式组成。不确定合并过程中哪里出错了。

问题行中的第一项是20140308.export.CSV中的第一项,而第二项(从第61列开始)是20140313.export.CSV中的第一项。第一个.csv文件是20140301.export.CSV,最后一个是20140331.export.CSV(YYYYMMDD.export.csv),共有31个.csv文件。这意味着有问题的行由来自不同.csv文件的第一项组成。

数据来自http://data.gdeltproject.org/events/index.html特别是日期为2014年3月1日至2014年3月31日。检查每个.csv文件的下载情况,会发现每个文件的格式均相同,并使用制表符分隔符和逗号分隔的值。

我使用的代码如下。如果还有其他我可以张贴的内容,请告诉我。所有这些都是通过Jupyter Lab通过Google Cloud Platform运行的。谢谢您的帮助。

import glob
import pandas as pd

file_extension = '.export.CSV'
all_filenames = [i for i in glob.glob(f"*{file_extension}")]
combined_csv_data = pd.concat([pd.read_csv(f, delimiter='\t', encoding='UTF-8', low_memory= False) for f in all_filenames])
combined_csv_data.to_csv('2014DataCombinedMarch.csv')

我使用以下bash代码下载数据:

!curl -LO http://data.gdeltproject.org/events/[20140301-20140331].export.CSV.zip

我使用以下代码解压缩数据:

!unzip -a "********".export.CSV.zip

我使用以下代码将其传输到存储桶:

!gsutil cp 2014DataCombinedMarch.csv gs://ddeltdatabucket/2014DataCombinedMarch.csv
尼克·奥德尔

看起来这些CSV文件上没有标题,因此Pandas尝试使用文件中的第一行作为标题。然后,当Pandas尝试将数据帧concat()在一起时,它试图匹配为每个文件推断出的列名。

我想出了如何抑制这种行为:

import glob
import pandas as pd


def read_file(f):
    names = [f"col_{i}" for i in range(58)]
    return pd.read_csv(f, delimiter='\t', encoding='UTF-8', low_memory=False, names=names)


file_extension = '.export.CSV'
all_filenames = [i for i in glob.glob(f"*{file_extension}")]

combined_csv_data = pd.concat([read_file(f) for f in all_filenames])
combined_csv_data.to_csv('2014DataCombinedMarch.csv')

您可以通过names参数将自己的列名称提供给Pandas 在这里,我只是供给col_0col_1col_2等的名字,因为我不知道他们应该是什么。如果您知道这些列应该是什么,则应更改该names = 行。

我测试了此脚本,但仅使用2个数据文件作为输入,而不是全部31个。

PS:您是否考虑过使用Google BigQuery来获取数据?在通过该界面之前,我已经与GDELT进行过合作,这很容易。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Jupyter Lab中设置路径以查找CSV文件?

来自分类Dev

在Python中合并csv文件

来自分类Dev

使用pandas合并excel文件数据

来自分类Dev

使用python合并多个csv文件-结果csv将某些数据推到合并csv中的右侧

来自分类Dev

Python-合并CSV文件中的列

来自分类Dev

在 Python 中合并文件

来自分类Dev

合并CSV文件错误1004

来自分类Dev

无法从Jupyter-lab笔记本和pathlib.Path导入父文件夹中的模块

来自分类Dev

合并CSV文件Python中与不同的文件名

来自分类Dev

在Python中合并Regex文件

来自分类Dev

合并许多CSV文件

来自分类Dev

合并多个csv文件

来自分类Dev

如何在Python中垂直合并几个csv文件?

来自分类Dev

基于python中的模板头合并多个csv文件

来自分类Dev

如何在python中合并两个csv文件

来自分类Dev

在Python中合并两个CSV文件

来自分类Dev

Awk中的合并文件错误

来自分类Dev

将csv文件中的数据合并到Oracle中

来自分类Dev

Scala:如何合并数据框中的多个 CSV 文件

来自分类Dev

将CSV文件数据加载到表中时出现MySQL错误

来自分类Dev

使用writerow在python错误中合并具有不同列的多个csv文件

来自分类Dev

SoX中可以合并的最大文件数?

来自分类Dev

用python合并csv文件出错

来自分类Dev

在熊猫中合并缺少列的CSV文件

来自分类Dev

合并csv文件中的选定行/行

来自分类Dev

在unix,bash中合并csv文件

来自分类Dev

在大文件中合并CSV行

来自分类Dev

在Java中合并多个csv文件

来自分类Dev

合并多个csv文件以在Python中形成一个csv文件