Python Pandas 添加文件名列 CSV

新手上路,请多包涵

我的 python 代码在下面的示例中正常工作。我的代码结合了一个 CSV 文件目录并匹配标题。但是,我想更进一步——如何添加一个列来附加所使用的 CSV 文件名?

 import pandas as pd
import glob

globbed_files = glob.glob("*.csv") #creates a list of all csv files

data = [] # pd.concat takes a list of dataframes as an agrument
for csv in globbed_files:
    frame = pd.read_csv(csv)
    data.append(frame)

bigframe = pd.concat(data, ignore_index=True) #dont want pandas to try an align row indexes
bigframe.to_csv("Pandas_output2.csv")

原文由 specmer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 757
2 个回答

这应该有效:

 import os

for csv in globbed_files:
    frame = pd.read_csv(csv)
    frame['filename'] = os.path.basename(csv)
    data.append(frame)

frame['filename'] creates a new column named filename and os.path.basename() turns a path like /a/d/c.txt into the filename c.txt .

原文由 Mike Müller 发布,翻译遵循 CC BY-SA 3.0 许可协议

files 变量包含当前目录中的所有 csv 文件列表。如 ['FileName1.csv',FileName2.csv'] 。您还需要删除 ".csv" 。您可以使用 .split() 功能。下面是简单的逻辑。这对你有用。

 files = glob.glob("*.csv")
for i in files:

    df=pd.read_csv(i)
    df['New Column name'] = i.split(".")[0]
    df.to_csv(i.split(".")[0]+".csv")

原文由 Himalay Parmar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题