将多个 .csv 文件中的数据导入单个 DataFrame

Importing data from multiple .csv files into single DataFrame

我无法将多个 .csv 文件中的数据放入单个数组中。我可以很好地从 .csv 文件中获取所有数据,只是无法将所有数据都放入一个简单的 numpy 数组中。每个 .csv 文件的名称对我来说都很重要,所以最后我想要一个 Pandas DataFrame,其中的列标有 .csv 文件的初始名称。

import glob
import numpy as np
import pandas as pd

files = glob.glob("*.csv")

temp_dict = {}
wind_dict = {}

for file in files:
    data = pd.read_csv(file)
    temp_dict[file[:-4]] = data['HLY-TEMP-NORMAL'].values
    wind_dict[file[:-4]] = data['HLY-WIND-AVGSPD'].values

temp = []
wind = []
name = []

for word in temp_dict:
    name.append(word)
    temp.append(temp_dict[word])
for word in wind_dict:
    wind.append(wind_dict[word])

temp = np.array(temp)    
wind = np.array(wind)

当我打印 temp 或 wind 时,我得到这样的结果:

[array([ 32.1,  31.1,  30.3, ...,  34.9,  33.9,  32.9])
 array([ 17.3,  17.2,  17.2, ...,  17.5,  17.5,  17.2])
 array([ 41.8,  41.1,  40.6, ...,  44.3,  43.4,  42.6])
 ...
 array([ 32.5,  32.2,  31.9, ...,  34.8,  34.1,  33.7])]

当我真正想要的是:

[[ 32.1,  31.1,  30.3, ...,  34.9,  33.9,  32.9]
 [ 17.3,  17.2,  17.2, ...,  17.5,  17.5,  17.2]
 [ 41.8,  41.1,  40.6, ...,  44.3,  43.4,  42.6]
 ...
 [ 32.5,  32.2,  31.9, ...,  34.8,  34.1,  33.7]]

这不起作用,但这是我的代码的目标:

df = pd.DataFrame(temp, columns=name)

当我尝试使用来自 Pandas 的 DataFrame 时,每一行都是它自己的数组,这没有用,因为它认为每一行中只有元素。我知道问题出在 "array(...)" 我只是不知道如何摆脱它。预先感谢您的时间和考虑。

我认为你可以使用:

files = glob.glob("*.csv")
#read each file to list of DataFrames
dfs = [pd.read_csv(fp) for fp in files]
#create names for each file
lst4 = [x[:-4] for x in files]
#create one big df with MultiIndex by files names
df = pd.concat(dfs, keys=lst4)

如果需要单独 DataFrames 更改上面解决方案的最后一行并重塑:

df = pd.concat(dfs, keys=lst4).unstack()

df_temp = df['HLY-TEMP-NORMAL']
df_wind = df['HLY-WIND-AVGSPD']