【问题标题】:Merging dataframes with multiple columns in common合并具有多个共同列的数据框
【发布时间】:2020-04-18 13:29:28
【问题描述】:

我有多个 csv 文件,对应于我所在国家/地区的大学入学成绩,除以年份。

每个 csv 文件由 7 列组成:

"Institution Code", "Curse Code", "Institution", "Course", NrVacanciesYear", "NrPlacedYear", "LastGradeYear".

我正在尝试将 21 个文件(从 1997 年到 2018 年)连接到一个文件中,并按年份连接列。

我正在尝试使用

dffinal_conc = pd.concat([df18, df17], ignore_index=True)

但我在按“机构代码”和“课程代码”分组时遇到问题(注意:来自不同机构的相同课程具有相同的 ID!)

当我尝试使用它时

dffinal_conc = pd.concat([df18, df17], axis = 1) 

它有点按课程和机构代码分组,但当我尝试使用时,我不知道我是否做得正确

dffinal_conc['Código Curso'].value_counts() 

为了验证 ID 只有 1 个值,我得到一个错误:

AttributeError: 'DataFrame' 对象没有属性 'value_counts'"

(注意:我使用dffinal_conc2.loc[:,~dffinal_conc2.columns.duplicated()] 删除重复项)

感谢您的帮助!

【问题讨论】:

  • 制作 2 个小型数据框,用于描述您的问题陈述,并向我们展示基于 2 个示例输入数据框的示例输出。您可以从这里获得帮助:how to provide a great pandas example

标签: python pandas dataframe


【解决方案1】:

将所有 csv 文件放入一个文件夹并尝试以下操作:

import os
import pandas as pd
import glob


temp = pd.DataFrame()

path_to_csv = '/folder/of/csvs/' 

csv_pattern = os.path.join(path_to_csv,'*.csv')
file_list = glob.glob(csv_pattern)

for file in file_list:
    df = pd.read_csv(file , header= True)
    temp = temp.append(df, sort = True)

temp

【讨论】:

  • 感谢您的回复。输出是一个大小为 22446 x 70 的 df,列数是正确的,问题是最大行应该是 1068,基于去年的 csv。
  • 感谢您的回复。输出是一个大小为 22446 x 70 的 df,列数是正确的,问题是最大行应该是 1068,基于去年的 csv。我试图看到带有missingo的df,结果是这个imgur.com/a/LwlA0MH
猜你喜欢
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 2012-11-26
  • 2018-03-21
  • 2021-03-06
  • 1970-01-01
相关资源
最近更新 更多