如何比较来自多个csv的数据

Posted

技术标签:

【中文标题】如何比较来自多个csv的数据【英文标题】:How to compare data from multiple csv 【发布时间】:2020-11-21 14:19:39 【问题描述】:

我有 25 个 csv 文件,每个文件有 4 列,我必须在所有 25 个 CSV 中比较 1 个名为 City 的列,然后在 csv 中写入输出,以了解哪个城市存在于多少具有文件名的文件中。 例如

在 excel 中,我希望 New york 在前 0 列的第一行,然后在下一列中,我想获取纽约市所在的文件名。赞csv_output.csv

New york File 1, File 2, File 3, File 5, File 25
Jakarta  File 1, File 7, File 19.

如何使用 Python、Pandas 或 CSV 或任何其他选项来实现。

目前我最初检查了两个 csv,但这也不起作用。 我的要求是 25 个 CSV 文件。

import pandas as pd
Data1 = pd.read_csv('C:/Users/File1.csv')
Data2  = pd.read_csv('C:/Users/File2.csv', usecols=['City'])
for df in [Data1, Data2]:
    df['City'] = df['City'].str.rstrip()
result = pd.merge(netscan, computer, on='City', how='outer')

result.to_csv('Report.csv', index=False)
print(result)

【问题讨论】:

【参考方案1】:

这是一种方法。首先,将所有 25 个 CSV 文件收集到一个数据框中:

import pandas as pd
dfs = list()
for file in files:
    df = pd.read_csv(file)
    df['file'] = file
    dfs.append(df)
dfs = pd.concat(dfs)

接下来,计算汇总统计数据:

result = dfs.groupby('file')['city'].count()

这里是发布示例的信息:How to make good reproducible pandas examples

【讨论】:

import pandas as pd import glob path = r'C:/Users/' # 使用你的路径 all_files = glob.glob(path + "/*.csv") dfs = list() for file在所有文件中: df = pd.read_csv(file) df['file'] = file dfs.append(df) dfs = pd.concat(dfs) #print (dfs) result = dfs.groupby('City')[' City'].count() print (result) 我进行了上述更改,我得到了名称:City, Length: 947002, dtype: int64 与那个城市 coloum 并在它前面我得到像纽约一样的计数:1 雅加达: 1 但我的要求是获得纽约:文件 1,文件 2 雅加达:文件 19,在新的 CSV 中。

以上是关于如何比较来自多个csv的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在循环中绘制来自多个文件的数据

如何使用多个 CSV 文件进行机器学习异常检测

如何使用 Pandas 将多个 csv 文件中的单个数据列合并为一个?

如何从多个 .csv 文件中的命名列中选择唯一值?

如何强制 Text::CSV 将数字存储为文本?

如何在 BASH 中合并来自两个 CSV 文件的数据?