使用df.merge函数从列表中创建数据帧



我有一组.txt文件,需要读取并导入到数据帧中。每个文件都有相同的结构(x列和y列;每个文件的x列相等(。我使用tkinter对话框选择文件,并获得一个元组(文件名(,其中包含我需要读取和导入的每个文件的路径。我的策略是使用for循环读取文件并将数据存储在列表数据中。

data = []
for i in range(len(filenames)):
df = pd.read_csv(filenames[i], delimiter = "t")
data.append(df)

(在这种特殊情况下,len(data)= 4(然后,通过另一个for循环,我试图使用命令df.merge:将数据列表转换为pandas数据帧

df_mrg = data[0]
for k in range(len(data)):
df2 = data[k]
df_mrg.merge(df2)

但它不起作用,我只得到一个数据帧,其中有2列对应于data[0]我还试图在for循环中定义一个全局变量,它稍微好一点,但仍然没有得到我需要的所有数据:

df_mrg = data[0]
for k in range(len(data)):
global a
df2 = data[k]
a = df_mrg.merge(df2)

有人能识别我代码中的错误或提出更好的策略吗?

Python版本:3.8.3使用jupiter笔记本操作系统:windows 10

Pandas.merge()函数未更新到位。它返回一个新的数据名,如果您想累积结果,您需要将返回的数据帧分配回原始数据帧名称。因此,您应该在循环中使用以下代码:

df_mrg = df_mrg.merge(df2)

最新更新