如何基于另外两列的值在数据框中创建一列?

时间:2019-06-18 12:08:52

标签: python dataframe replace

我正在为税收文件预先格式化一些数据,并且我正在使用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)]“

0 个答案:

没有答案