【发布时间】:2021-01-07 06:31:31
【问题描述】:
我有 3 个 csv 文件
df = pd.DataFrame({'person_id': [11,11,11],'Age':[23,25,28],'Summary':['Test','Test1','Test2']})
df1 = pd.DataFrame({'person_id': [21,22,51],'Age':[26,29,22],'Order Summary':['Tep','Tst1','Tt2'],'Order Summary2':['ppp','Ttt','Tfsa']})
df2 = pd.DataFrame({'person_id': [31,31,41],'Age':[27,20,21],'Order Summary':['Tet','Tt1','Tt2'],'Order Summary1':['Tet','Tt1','Tt2']})
我想读取所有这些 csv 文件并创建一个数据框。
但是,我只想为每个文件读取两列,并且它们的名称有点不同。我想创建一个包含两列 person_id 和 Summary 的最终数据框(在其他 csv 文件中也称为 Order Summary)
我不想阅读其他 csv 文件的 Age、Order Summary1 或 Order Summary2 列。
在创建最终数据帧时,基本上只使用正则表达式/模式匹配来读取Summary|Order Summary 列
我在 SO 帖子中尝试了类似下面的内容
col_list = ["person_id", "Summary"] # but here i don't know how to use regex
files = glob.glob("file*.csv")
dfs = [pd.read_csv(f,usecols = col_list, header=None, sep=";") for f in files]
meddata = pd.concat(dfs,ignore_index=True)
可以帮助我了解如何在阅读 csvs 时使用正则表达式来选择列吗?
我希望我的最终数据框具有如下所示的列,您可以看到每个 csv 文件中只有这 2 个必需的列是如何被选择和连接的)
Person_id Summary
11 Test
11 Test1
11 Test2
21 Tep
22 Tst1
51 Tt2
31 Tet
31 Tt1
41 Tt2
【问题讨论】:
-
我只想要
Order Summary。所有文件都有Summary或Order Summary。我们不关心Order Summary 1或Order Summary 2。如果你看到df1和df2,你可以看到它有Order Summary和Order Summary2。我只想要Order Summary。希望这个helos
标签: python python-3.x pandas dataframe glob