Pandas - 将来自多个文本文件的信息合并到单个数据帧

Bru*_*yne 2 python dataframe pandas

.txt在一个文件夹中保存了多个文本 ( ) 文件。我正在尝试将它们全部组合成一个数据帧。到目前为止,我已经能够将它们结合起来,但不是以我想要的方式。

文本文件(命名yob####.txtwhere ####is a year)包含如下信息:

Jennifer,F,58376
Amanda,F,35818
Jessica,F,33923
Melissa,F,31634
Sarah,F,25755
Heather,F,19975
Nicole,F,19917
Amy,F,19834
Elizabeth,F,19529
Michelle,F,19122
Kimberly,F,18499
Angela,F,17970
Run Code Online (Sandbox Code Playgroud)

我试图打开每个文件,将年份添加到行的末尾,然后继续。

def main():
    files = file_paths(FILE_FOLDER) # returns a list of file paths, i.e. ["C:\Images\file.txt","C:\Images\file2.txt", ...]

    df = []
    for file in files:
        year = file.split("\\")[-1][3:7] 
        df.append(pd.read_table(file)+","+year)
    big_df = pd.concat(df, ignore_index=True, axis=1)
    big_df.to_csv("Combined.csv", header=False, index=False)
Run Code Online (Sandbox Code Playgroud)

这几乎有效......除了它需要每个文件并将数据放在一列中,下一个文件放在第二列中,下一个文件放在第三列中,等等。

电流输出: 在此处输入图片说明

预期的输出是相同的,除了在打开 1881 文件时,它将信息添加到1880. 然后1882追踪1881数据等。

cs9*_*s95 5

  1. 使用read_table,默认分隔符假定为空格 ( sep='\t')。更改read_tableread_csv,这会推断出您的分隔符。或者,指定sep=','相同的效果。
  2. 您正在尝试添加一个新列year,但您没有正确执行此操作。您可以使用assign将其添加到
  3. 垂直连接(axis=0默认值),而不是水平连接。

df_list = []
for file in files:
    year = ...
    df_list.append(pd.read_csv(file, header=None).assign(year=year))

big_df = pd.concat(df_list, ignore_index=True)
big_df.to_csv("Combined.csv", header=False, index=False)
Run Code Online (Sandbox Code Playgroud)