如何使用pandas解析大量txt文件,并从表格的每一行中了解它来自哪个文件。

19 浏览
0 Comments

如何使用pandas解析大量txt文件,并从表格的每一行中了解它来自哪个文件。

这个问题已经有了答案:

将多个CSV文件导入到pandas并将它们连接成一个DataFrame

我有一个包含人名、性别和数量的数据集。有很多文本文件(>100个)。它们每个都有相同的信息,只是针对1880年、1881年....2008年的不同数量参数而已。

这里有一个链接,可以更清楚地说明:https://github.com/wesm/pydata-book/tree/2nd-edition/datasets/babynames 如何导入所有这些文件并标记每个年份的行?

所以表格看起来像这样:

YEAR   NAME  GENDER  QUANTITY
1998   Marie    F      2994  
1996   John     M      2984
1897   Molly    F       54

主要问题是如何根据文件名将每行标记为相应的年份。

这是我为一个文件编写的代码,但我需要为100多个文本文件做同样的事情...

import pandas as pd
df = pd.read_csv("yob1880.txt", header=None)
df["year"] = 1880 # add new column according to the file`s year
print(df)

admin 更改状态以发布 2023年5月23日
0
0 Comments

这里有两个问题:

  1. 如何从文件名中提取年份并分配给新列。
  2. 如何连接多个数据框。

你可以使用字符串切片和 pd.DataFrame.assign 实现前者;使用 pd.concat 实现后者。 假设您的文件名格式为 yobXXXX.txt

df = pd.concat(pd.read_csv(fn).assign(YEAR=int(fn[3:7])) for fn in filenames)

或者如果你想忽略索引:

df = pd.concat((pd.read_csv(fn).assign(YEAR=int(fn[3:7)) for fn in filenames),
               ignore_index=True)

0