[英]Import multiple CSV files into pandas and concatenate into one DataFrame
[英]Import multiple csv files into pandas and concatenate into one DataFrame where 1st column same in all csv and no headers of data just file name
Import multiple CSV files into pandas and concatenate into one DataFrame where 1st column same in all csv and no headers of data just file name.
在所有 CSV 中只有文件名描述了其中数据的含义。 在所有 CSV 文件中没有 header。 第一列在所有 CSV 文件中都很常见。
如何将所有 CSV 文件合并到 python 中的一个数据集。 代码:
import os
import pandas as pd
import glob
path= "....\\data"
os.chdir(path)
results = pd.DataFrame()
for counter, current_file in enumerate(glob.glob("*.csv")):
namedf = pd.read_csv(current_file, header=None)
print(namedf)
results = results.merge(namedf, on='0')
results.to_csv('Combined.csv', index=None, header=None)
由于您没有写 headers ,我认为应该使用header=None
来执行阅读。 使用header=filename
是一个非常奇怪的概念。
我假设您有前 2 个输入 DataFrame,如下所示:
0 1 2
0 A Bbb1 Ccc1
1 B Bbb2 Ccc2
2 C Bbb3 Ccc3
3 D Bbb4 Ccc4
0 1 2
0 A Ddd1 Eee1
1 B Ddd2 Eee2
2 C Ddd3 Eee3
3 D Ddd4 Eee4
在第一列中具有相同的内容。
据我了解,您希望在第一列的共同值上水平加入(实际上合并)它们。
要合并前 2 个 DataFrame,比如说df和df2你可以这样做:
df = pd.merge(df, df2, on=[0], how='outer')
df.columns = [ n for n in range(len(df.columns)) ]
然后合并的内容回到df中,列重命名为连续整数:
0 1 2 3 4
0 A Bbb1 Ccc1 Ddd1 Eee1
1 B Bbb2 Ccc2 Ddd2 Eee2
2 C Bbb3 Ccc3 Ddd3 Eee3
3 D Bbb4 Ccc4 Ddd4 Eee4
这样您就不会重复第一列(合并键)。
因此,您读取和合并源文件的循环可能类似于:
for counter, current_file in enumerate(glob.glob("*.csv")):
print(f'{counter}: {current_file}')
if counter == 0:
df = pd.read_csv(current_file, header=None)
else:
df2 = pd.read_csv(current_file, header=None)
df = pd.merge(df, df2, on=[0], how='outer')
df.columns = [ n for n in range(len(df.columns)) ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.