如何打印所有CSV文件中共有的列名

6 浏览
0 Comments

如何打印所有CSV文件中共有的列名

我拼凑了一些代码,以为会打印出在文件夹中所有CSV文件中都存在的列名。我使用了内连接,但它的行为像是外连接。这肯定有一个快速修复的方法,对吧。

import glob
import pandas as pd
files = glob.glob(r'C:\my_files\*.csv')
def get_merged(files, **kwargs):
    df = pd.read_csv(files[0], **kwargs)
    for f in files[1:]:
        df = df.merge(pd.read_csv(f, **kwargs), how='inner')
    return df
print(get_merged(files))

所以,如果我有4个文件,包含以下列:

cola   colb    colc    cold    cole

还有1个文件,包含以下列:

cola    colc    cole

我希望看到的结果是:

cola    colc    cole

0
0 Comments

问题的出现是因为用户想要找出在所有CSV文件中共同出现的列名,并且需要给出解决方法。以下是解决该问题的两种方法:

方法一:使用pandas解决方法

import pandas as pd
def get_common_columns(files, **kwargs):
    """获取指定CSV文件的列名的交集"""
    common_columns = set(pd.read_csv(files[0], nrows=0, **kwargs).columns)
    for f in files[1:]:
        common_columns &= set(pd.read_csv(f, nrows=0, **kwargs).columns)
    return common_columns

方法二:使用原生Python解决方法

import csv
def get_common_columns(files):
    """获取指定CSV文件的列名的交集"""
    with open(files[0], 'r') as file:
        reader = csv.reader(file)
        common_columns = set(next(reader))
    for f in files[1:]:
        with open(f, 'r') as file:
            reader = csv.reader(file)
            common_columns &= set(next(reader))
    return common_columns

用户最初试图使用pandas解决方法,但是发现即使使用pandas的merge或join函数,也无法得到列名的交集,因此他们转而寻求原生Python的解决方法。他们向其他用户提问如何通过原生Python找到在所有CSV文件中共同出现的列名。用户给出了他们想要的结果和示例数据,并且对之前的混淆向其他用户道歉。

以上是两种解决方法,用户可以根据自己的需求选择其中一种方法来找到在所有CSV文件中共同出现的列名。

0
0 Comments

问题的出现原因:有多个CSV文件,需要找到这些文件中所有的列名的交集。

解决方法:使用Python编写代码,读取每个CSV文件的列名,并将所有的列名取交集。

在处理CSV文件时,有时我们需要找到多个文件中所有的列名的交集。这种情况下,我们可以使用Python编写代码来实现这个目标。

以下代码段是从Stack Overflow上的一个回答中提取的:

import csv
from glob import iglob
unique_headers = set()
for filename in iglob('*.csv'):
    with open(filename, 'rb') as fin:
        csvin = csv.reader(fin)
        unique_headers.update(next(csvin, []))
print(unique_headers)

这段代码的作用是读取当前目录下所有的CSV文件,并将每个文件的列名添加到一个集合中。最后,打印出集合中的所有元素,即为所有CSV文件中共同的列名。

通过这段代码,我们可以轻松地找到多个CSV文件中的共同列名,并进行后续的处理。

参考链接:How can I read only the header column of a CSV file using Python?

0