python - 如何使用 for 循环将列标题列表添加到多个文件

标签 python pandas

我想创建一个 for 循环来命名多个文件中的列。所有文件均为 .csv。命名文件后,我想附加它们。我想我已经从下面开始了。

import csv
import pandas as pd


df0 = pd.read_csv('/home/jayaramdas/anaconda3/df/s110_s_b') 
df1 = pd.read_csv('/home/jayaramdas/anaconda3/df/s111_s_b') 
df2 = pd.read_csv('/home/jayaramdas/anaconda3/df/s112_s_b') 
df3 = pd.read_csv('/home/jayaramdas/anaconda3/df/s113_s_b') 
file_list = ['df0', 'df1', 'df2', 'df3']

for file in file_list:

    file.columns = ['date', 'bill_id', 'sponsor_id']

    df0 = df0.append(df1)
    df0 = df0.append(df2)
    df0 = df0.append(df3)


print (df0)

但我收到以下错误:

`enter code here`AttributeError                            Traceback (most recent call last)
<ipython-input-86-5d50a0488b24> in <module>()
      9 file_list = ['df0', 'df1', 'df2', 'df3']
     10 for file in file_list:
---> 11     file.columns = ['date', 'bill_id', 'sponsor_id']
     12 df0.columns = ['date', 'bill_id', 'sponsor_id']
     13 df0 = df0.append(df1)

AttributeError: 'str' object has no attribute 'columns'

最佳答案

你可以尝试这个:

import pandas as pd
import glob

df = pd.concat((pd.read_csv(f, names=['date','bill_id','sponsor_id']) for f in glob.glob('/home/jayaramdas/anaconda3/df/s11?_s_b')))

PS,如果您的 CSV 文件相对较小,那么您可能需要将它们读入一个字符串,然后从该字符串创建数据框。

关于python - 如何使用 for 循环将列标题列表添加到多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35855131/

相关文章:

python - 如何在 Django 中获取 ContentType 的类名

python - 错误为 `pip freeze > requirements.txt`

python - Python 中列表的 bool 值

python - 如何从 HDFStore 中的框架中选择列

python - pandas python 中的嵌套循环

python - 运行 df.columns 后显示所有列

python - 跨多个文档的字符串搜索 - grep?

python - map 功能花费太多时间(Pandas DataFrame)

python - 连接 Pandas 数据帧时整数变成 float

python - Python 中的堆栈和数据透视数据框