我正在为税收文件预先格式化一些数据,并且我正在使用python来自动化一些excel工作。我有一个包含三列的数据框:帐户;相反账户;量。我只有相反帐户的名称和值,但是同一对帐户(相反帐户)的值应该完全相同。例如:
Account Opposite Acc. Amount
Cash -240.56
Supplies 240.56
Dentist -10.45
Gum 10.45
由此,我可以推断出Cash是Supplier的对立物,Dentist是Gum的对立面,所以我希望输出是:
Account Opposite Acc. Amount
Supplies Cash -240.56
Cash Supplies 240.56
Gum Dentist -10.45
Dentist Gum 10.45
现在我通过使用str.contains手动完成
df = df.assign(en_accounts = df['Opposite Acc.'])
df['Account'] = df['Account'].fillna("0")
df.loc[df['Account'].str.contains('Cash'), 'Account'] = 'Supplies'
但是有很多变量,我想知道是否有一种方法可以在python中自动执行此过程。一种策略可能是:如果两行加起来等于0,则帐户是匹配的->因此,当“对立帐户”中发生项目A(例如耗材)时,项目B(例如现金)放在同一位置行,但在“帐户”中。
这是我到目前为止所拥有的:
df['Amount'] = np.abs(df["Amount"])
c1 = df['Amount']
c2 = df['Opposing Acc.']
for i in range(1,len(c1)-1):
p = c1[i-1]
x = c1[i]
n = c1[i+1]
if p == x:
for i in range(1,len(c2)-1):
a = c2[i-1]
df.loc[df['en_account']] = a
但是出现以下错误:“ [索引]中没有[Index [....] \ n dtype ='object',length = 28554)]“