我正在尝试使用itertuples()循环中的pandas.DataFrame中的to_csv方法将数据帧对象的每一行写入新的csv。但是,每当我在行对象上调用DataFrame时,我都会收到以下错误。
AttributeError:'Pandas'对象没有属性'DataFrame'
关于同一错误的其他问题表明这可以做到:
1)DataFrame的错误大写,即数据帧或Dataframe 2)或大熊猫本身的问题,安装过程中的错误等。
我知道它不是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')
这是什么意思?它试图订购什么?为什么?
答案 0 :(得分:0)
尝试将Outlook邮件数据加载到数据框中时,我有相同的体验。 在下面的代码中,您可以找到一种简单的方法来克服输入数据丢失/ message.To 在此示例中./。
import win32com.client
import pandas as pd
outlook =win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(5)
messages = inbox.Items
message = messages.GetFirst()
df2 = pd.DataFrame([[' ',' ',' ']],columns=list('ABC'))
i=1
while message:
try:
df2.loc[i]=(message.Subject,message.SenderEmailAddress,message.To)
i=i+1
except:
print("Error!")
df2.loc[i]=(message.Subject,message.SenderEmailAddress,"Üres")
i=i+1
message = messages.GetNext()