Python 如何从多个.csv文件中的命名列中选择唯一值?
我正在尝试从多个CSV创建唯一ID的列表 我有大约80个包含数据的CSV,它们都是相同格式和相同目录中的数据。这些文件包含来自大约1500个站点的时间序列数据,但并非所有站点都包含在所有文件中。包含我需要的数据的列称为“站点Id”。 通过创建数据帧,我可以从第一个csv中获得唯一的值,但我看不到如何循环遍历所有剩余的文件 如果现在还不清楚的话,我是一个完全的初学者,我的导师正在度假 我已经尝试为一个文件创建df,但我不知道下一步该怎么做Python 如何从多个.csv文件中的命名列中选择唯一值?,python,pandas,loops,csv,dataframe,Python,Pandas,Loops,Csv,Dataframe,我正在尝试从多个CSV创建唯一ID的列表 我有大约80个包含数据的CSV,它们都是相同格式和相同目录中的数据。这些文件包含来自大约1500个站点的时间序列数据,但并非所有站点都包含在所有文件中。包含我需要的数据的列称为“站点Id”。 通过创建数据帧,我可以从第一个csv中获得唯一的值,但我看不到如何循环遍历所有剩余的文件 如果现在还不清楚的话,我是一个完全的初学者,我的导师正在度假 我已经尝试为一个文件创建df,但我不知道下一步该怎么做 df = pd.read_csv(r'C:filepath
df = pd.read_csv(r'C:filepathhere.csv')
ids = df['Site Id'].unique().tolist()
您可以这样做,迭代所有CSV并将其加载到数据帧中:
from os import walk, path
import pandas as pd
path = 'Path to CSV dir'
csv_paths = []
for root, dirs, files in walk(path):
for c in glob(path.join(root, '*.csv')):
csv_paths.append(c)
for file_path in csv_paths:
df = pd.read_csv(filepath_or_buffer=file_path)
# do something with df (append, export, etc.)
你可以这样做。我使用函数获取所有文件,然后将遇到的站点ID合并到我的站点ID列表中。最后,将一个列表转换为一个集合,然后再返回到一个列表中,将删除所有重复的条目
siteIDs = []
directoryToCSVs = r'c:\...'
for filename in os.listdir(directoryToCSVs):
if filename.lower().endswith('.csv'):
df = pd.read_csv(r'C:filepathhere.csv')
siteIDs.extend( df['Site Id'].tolist() )
#remove duplicate site IDs
siteIDs = list(set(siteIds))
#siteIDs will now contain a list of the unique site IDs across all of your CSV files.
首先,您需要将文件收集到一个列表中,以便从中获取数据。有很多方法可以做到这一点,假设您知道它们都在的目录 从操作系统导入漫游 f=[] 对于walkmypath中的目录路径、目录名和文件名: f、 延伸透镜 打破 然后,在该列表中,您需要收集所需的唯一值。不使用Pandas,因为您似乎并不需要数据框中的信息: 导入csv 唯一_数据={} 对于f中的文件: 使用openfile,“rU”作为内嵌: reader=csv.dictReader文件 对于读取器中的行: 仔细检查每一项,为字典增添价值 对于标题,行中的值。项: 唯一_数据[值]=0 如果您想要一个真实的列表,unqiue_data.keys现在是唯一值的列表 唯一的\u数据\u列表=listunqiue\u data.keys
您需要的最终格式是什么?名单?谢谢你的询问。我认为一份清单是最好的选择。我计划使用该列表作为按站点划分每个CSV的基础,因此,如果您不需要在之前或之后使用它,我将使用1500个单独站点的所有数据文件,而不是所有站点的80个月数据文件。明白了,我提出了一个避免使用熊猫的答案,熊猫是一个更重的包。如果你仍在使用它,请查看与你尝试的方法类似的其他方法。