【问题标题】:Append multiple CSVs with the name of the name of each CSV in all rows - Python在所有行中附加多个 CSV 名称,每个 CSV 的名称 - Python
【发布时间】:2014-12-01 04:38:20
【问题描述】:

我在 Python 中有这段代码,它附加了位于同一文件中的多个 CSV。它工作正常。

import os
import pandas as pd

targetdir = r'E:/Base 2015-1/Carreras'

filelist = os.listdir(targetdir) 

big_df=pd.DataFrame()

for filename in filelist:
    big_df = big_df.append(pd.read_csv(os.path.join(targetdir, filename), header= None),ignore_index=True)

但是,我想在输出中创建一个列,其中包含每行在追加之前的 CSV 名称。例如:

CSV File: A1
1 2 3
a b 3

CSV File: A2
2 4 1
a e r

Append:
1 2 3 A1
a b 3 A1
2 4 1 A2
a e r A2

那么,我如何更改我的代码来获得它?

【问题讨论】:

    标签: python python-2.7 csv pandas


    【解决方案1】:

    我测试了以下内容是否符合您的指定:

    # from for loop onward... 
    for filename in filelist:
        tmpdf = pd.read_csv(os.path.join(targetdir, filename),sep=' ',header=None)
        tmpdf[len(tmpdf.columns)] = filename # add column with filename 
        bigdf = pd.concat([bigdf,tmpdf],ignore_index=True)
    

    【讨论】:

      【解决方案2】:

      您可以使用转换器参数即时更改或格式化值。如果不存在,我不确定是否会附加一列,但您可以尝试一下:

      def file_converter(file_number):
          # This can be made more complicated if you want A..Z
          return 'A{0}'.format(file_number)
      
      for file_number, filename in enumerate(filelist):
          file_path = os.path.join(targetdir, filename)
          # Modify the 4th column contents
          big_df = big_df.append(pd.read_csv(file_path, converters={3:file_converter(file_number)}))
      

      【讨论】:

        猜你喜欢
        • 2020-05-26
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 1970-01-01
        相关资源
        最近更新 更多