【发布时间】:2019-12-24 14:36:48
【问题描述】:
我有多个文件,我需要从每个数据框中选择一个特定的列并最终合并它们。 这是我的数据框示例,
>> df1.head()
ID df1 fox mnd
ADF 49.0 34.0 55.7
XCF 89.7 32.8 21.7
第二个和第三个数据帧是,
>> df2.head()
ID lat2 df2 sap
ADF 67.00 84.00 95.70
XCF 59.70 62.80 11.70
BHG 89.00 54.89 0.34
>> df3.head()
ID df1 df2 df3
ADF 56.00 84.00 95.70
XCF 59.70 62.80 11.70
CXD 89.90 0.90 1.56
以此类推,我有 37 个这样的不同维度的数据框。我正在寻找的是:
首先,我只需要选择与文件名相同的列。例如,从
df1我只需要列df1。最后,将它们连接在一起作为一个数据框。
这里的问题是:对于某些数据帧,我的列名包含路径中的所有文件名,但对于少数数据帧,我只有包含文件名的列名和其他名称的附加列。所以我的以下代码是从每个数据帧中选择所有列。这不是我想要的。
path = 'usr/fils/data'
all_files = [os.path.join(path, i) for i in os.listdir(path) if i.endswith('tsv')]
filenames = [os.path.basename(os.path.normpath(files)) for files in all_files]
main = []
for files in all_files:
for samids in filenames:
dfs = pd.DataFrame.from_csv(files, sep="\t")
dfs.reset_index(drop=False, inplace=True)
if samids in dfs.columns:
pc_matrix = dfs[[samids]]
main.append(pc_matrix)
merged = pd.concat(main, axis=1)
例如,在这种情况下,merged 数据帧由三个数据帧的所有列组成。然而,这不是我想要的。
最后,我需要我的数据框应该是这样的,
>> df_final
ID df1 df2 df3
ADF 49.00 84.00 95.70
XCF 89.70 62.80 11.70
BHG NA 89.00 NA
CXD NA NA 1.56
非常感谢任何建议。 谢谢!
【问题讨论】:
标签: python pandas dataframe multiple-columns