AttributeError:“列表”对象没有属性“ to_csv”

时间:2019-11-27 15:53:57

标签: python pandas

我正在尝试将合并的数据框保存到CSV文件中。代码一到达“ data.to_csv”行,它就会中断。我的代码如下:

import pandas as pd
import numpy as np
import os,errno
import glob


print ("Path has been read successfully")
path1 = glob.glob('S:\*Data\*Files\*Raw Data\*CPU\*Perf\*YesterdayDataset*.xlsx')
print (path1)
path2 = glob.glob("S:\*Data\*Files\*Raw Data\*CPU\*Perf\*CPUPerf_201920.csv")
print ("Path has been read successfully")
print ("Action has been completed successfully")

data = []

for df in path1:
    df = pd.read_excel(df)  
    data.append(df)

data.to_csv("H:\\test1.csv", index = False)



def sremove():
    try:
        os.remove()
    except OSError as e:
        if e.errno != errno.ENOENT:
            raise 

执行此代码后收到的错误是:

  

AttributeError:“列表”对象没有属性“ to_csv”

对此的任何帮助将不胜感激。谢谢

3 个答案:

答案 0 :(得分:1)

您尝试在to_csv()而非数据框上使用list函数。您必须先将x个数据帧合并为一个数据帧,然后才能从其中生成csv。

尝试这样的事情:


import pandas as pd
import numpy as np
import os,errno
import glob


print ("Path has been read successfully")
path1 = glob.glob('S:\*Data\*Files\*Raw Data\*CPU\*Perf\*YesterdayDataset*.xlsx')
print (path1)
path2 = glob.glob("S:\*Data\*Files\*Raw Data\*CPU\*Perf\*CPUPerf_201920.csv")
print ("Path has been read successfully")
print ("Action has been completed successfully")

data = []

for df in path1:
    df = pd.read_excel(df)  
    data.append(df)


finaldf = pd.concat(data, axis=1, join='inner').sort_index()
finaldf.to_csv("H:\\test1.csv", index = False)



def sremove():
    try:
        os.remove()
    except OSError as e:
        if e.errno != errno.ENOENT:
            raise 

答案 1 :(得分:1)

您的问题是您有一个数据帧列表,并且要在整个列表中调用to_csv而不是单个数据帧。这里有两个选项,如果列表中只有一个数据帧,请使用以下代码:

data[0].to_csv("H:\\test1.csv", index = False)

如果其中有多个数据帧,请执行以下操作:

for i in data:
    i.to_csv("filename", index = False)

请记住,对于第二个选项,您将需要使文件名动态化以避免覆盖。

编辑:

误读了您的问题。您实际上需要合并数据帧

df1 = pd.read_excel(path1)
df2 = pd.read_execl(path2)

df = df1.merge(df2, how = 'inner', on = 'JoinField')
df.to_csv("H:\\test1.csv", index = False)

答案 2 :(得分:1)

问题是您的data对象是DataFrames的list。您可以单独转换DataFrame,例如df.to_csv(...)或将它们合并在一起并输出为一个文件。

尝试更改此部分:

data = []

for df in path1:
    df = pd.read_excel(df)  
    data.append(df)

data.to_csv("H:\\test1.csv", index = False)

对此:

df = pd.concat(pd.read_excel(fl) for fl in path1)
df.to_csv("H:\\test1.csv", index = False)