将多个CSV导入到一个DataFrame中?

w9apscun  于 2023-02-01  发布在  其他
关注(0)|答案(3)|浏览(126)

我试了很多答案,但没有一个对我有效:
例如:Import multiple CSV files into pandas and concatenate into one DataFrame

import pandas as pd
import glob
import os

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(os.path.join(path , "/*.csv"))

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

我只有2个csv文件:
1.csv:

1,1
2,1
3,1
4,1
5,1

2.csv:

6,1
7,1
8,1
9,1

公平地说,这是我的合并程序:

files = glob.glob("data/*.csv")
df = []
for f in files:
    csv = pd.read_csv(f, index_col=None, header=0)
    df.append(csv)
df = pd.concat(df, axis=0, ignore_index=True)
df.to_csv("all.csv")
print(df);

下面是输出(print(df)):
这是"所有. csv":

,1,1.1,6
0,2,1.0,
1,3,1.0,
2,4,1.0,
3,5,1.0,
4,1,,7.0
5,1,,8.0
6,1,,9.0

而我需要所有的. csv都是:

1,1
2,1
3,1
4,1
5,1
6,1
7,1
8,1
9,1

我使用的是Python3.9和PyCharm 2022.3.1。
为什么我的所有. csv文件看起来像这样,我如何简单地将多个csv文件读入一个 Dataframe 以进行进一步处理?

jhdbpxl9

jhdbpxl91#

您必须交换headerindex_col的值:

data = []
for filename in all_files:
    df = pd.read_csv(filename, index_col=0, header=None)
    data.append(df)
df = pd.concat(data, axis=0)
df.to_csv('all.csv', header=False)

输出all.csv

1,1
2,1
3,1
4,1
5,1
6,1
7,1
8,1
9,1
fd3cxomn

fd3cxomn2#

我已经成功地使用这段代码附加到一个数据框几个Excel文件;它还强制某些列为字符串数据类型,当然,这是可以更改的:

fmask = 'C:/Users/USER/FILEPATH/*.xlsx'

# lst of column names which needs to be string
lst_str_cols = ['ItemID', 'StoreID']
# use dictionary comprehension to make dict of dtypes
dict_dtypes = {x : 'str'  for x in lst_str_cols}

dfs = []
for f in glob.glob(fmask):
    df = pd.read_excel(f, dtype=dict_dtypes)
    dfs.append(df)

# concatenated
dfConcatenate = pd.concat(dfs, ignore_index=True)

您可以将其更改为CSV,而不是Excel。

62lalag4

62lalag43#

import pandas as pd

df1 = pd.read_csv('csvfile1.csv', header=None)
df1 = pd.read_csv('csvfile2.csv', header=None)

df = pd.concat([df1, df2], ignore_index=True)

for index, row in df.iterrows():
    print(row[0], row[1])

相关问题