【发布时间】:2017-02-12 14:01:03
【问题描述】:
我正在尝试在 itertuples() 循环中使用 pandas.DataFrame 中的 to_csv 方法将切片的每一行从数据框对象写入新的 csv。但是,每当我在行对象上调用 DataFrame 时,都会出现以下错误。
AttributeError: 'Pandas' 对象没有属性 'DataFrame'
关于同一错误的其他问题表明这是为了:
1) DataFrame 大写错误,即 dataframe 或 Dataframe 2)或者pandas本身有问题,安装时出错等。
我知道它不是 1) 因为我已经编写了 DataFrame,如错误消息中所示。此外,我不希望它是 2) 因为我可以运行 pandas.read_csv 来导入数据帧,然后在这些对象上运行方法而没有任何问题。
所以,我的问题是:
1) 问题是否存在另一个可能的来源,可能是由于尝试将方法应用于循环中的一行?
2) 如何验证 pandas 及其所有方法都已正确安装?这样我就可以消除 2) 作为一种可能性。
for row in df.itertuples():
if not os.path.isfile(path):
row.DataFrame.to_csv(path, index=False, mode='w', header=headers)
elif os.path.isfile(path):
row.DataFrame.to_csv(path, index=False, mode='a')
AttributeError Traceback (most recent call last)
<ipython-input-192-0af973f1c147> in <module>()
39 row.DataFrame.to_csv(path, index=False, mode='w
, header=headers)
40 elif os.path.isfile(path):
---> 41 row.DataFrame.to_csv(path, index=False, mode='a
)
AttributeError: 'Pandas' object has no attribute 'DataFrame'
我已尝试消除 itertuples() 循环并替换为应用于数据帧的函数。功能是:
df.apply(lambda x: df.loc[x].to_csv(''.join([dir,'-'.join([df.iloc[x][3],df.iloc[x][5],df.iloc[x][4],df.iloc[x][0]]),'.csv'])
嵌套连接方法由每行中的值组成路径。我已经对不同的行进行了测试,它工作正常,但现在我在函数行中收到以下错误:
type error: ('unorderable types: str() >= int()', 'occurred at index 0')
这是什么意思?它想点什么?为什么?
【问题讨论】:
-
IIUC 你尝试删除
DataFrame-row.to_csv(path, index=False, mode='w', header=headers) -
你做错了。见
df.itertuples -
首先你为什么要这样做?您所做的只是将整个 df 写入一个位置,为什么不直接执行
df.to_csv(path, index=False)? -
@jezrael 是的,我试过了,但是它告诉我熊猫没有 to_csv 属性*.com/questions/38566430/…
-
@EdChum 也许我是,但是我的意图是只写行。我想将每一行分别写入不同的 csv。代码没有显示,但是每行的路径变量都会改变
标签: python pandas dataframe attributeerror