【发布时间】:2017-12-06 16:41:59
【问题描述】:
df = mdb.read_table(mdbfile, "table")
invoices = pd.read_csv(file, delimiter=';')
lst = df[(df['El4'] == el4)] #contains specific rows of df
for i, row in lst.iterrows():
prop = row['propertyid']
mouvement = (row['Mouvements']*-1)
a = invoices[(invoices['propertyReference'] == prop) & (invoices.invoiceGrossAmount == mouvement)]
invoiceid = a['invoiceId'].values
mouvement = (mouvement*-1)
if df[(df.propertyid == prop) & (df.Mouvements == mouvement)]:
df['id'] = invoiceid
我收到以下错误:
The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我想在 propertyid 等于 prop 和 mouvements 等于 mouvement 的数据框行中填写特定值 (invoiceId)。
【问题讨论】:
-
if df[(df.propertyid == prop) & (df.Mouvements == mouvement)]:行是否发生错误? -
似乎您可以使用
merge来执行此操作。指定您在帖子中概述的合并标准。 -
@dubbdan 确实在那一行
-
你能发布
lst和invoices的样本吗?我认为您需要合并数据框,而不是使用逻辑语句。 -
@dubbbdan 非常感谢您的回复!你实现它几乎是正确的。其实我不想合并我的表。只有当 df 中的“propertyid”与发票中的“propertyReference”匹配并且 df 中的“Mouvements”与“invoiceGrossAmount”匹配时,我才需要在表 2 中填写 invoiceid(表 1)。
标签: python pandas dataframe filter