熊猫 - 解析银行对账单

时间:2016-11-25 10:20:18

标签: python parsing pandas

我有2个数据框 - 交易和公司。

交易直接来自银行的csv。有一个列“预订文本”,其中有一个长字符串,其中包含交易的详细信息,这些字符串因许多因素而异,但大多数情况看起来像这样:

  

“Company Co. DERFTHD DE89758975869857 657878987 End-to-End-Ref:.FRG.3.GH.15789”

公司是一个包含两列的公司列表 - “搜索关键字”和“公司名称”,我已填充这些列以搜索这些“预订文本”字符串并返回公司名称。

我想在交易框架中创建一个新列,该列使用“搜索关键字”并包含“公司名称”

编辑:对不起 - 我是一个全新的人。让我再试一次。

所以我有一个名字的数据框

In [1]: df1 = pd.DataFrame([['cat','Bob'], ['dog','Joe'],['bird','Lary']], 
              columns=['A','B'])
Out[2]: df1
      A      B
0    cat    Bob
1    dog    Joe
2    bird   Lary

和字符串的数据框(以及其他列)

In [3]: df2 = pd.DataFrame([['the cat is big','2'],['the cat is small', 4],
              ['the dog is small',3]], columns=['C','D']
Out[4]:
            C            D
0    the cat is big      2
1    the cat is small    4
2    the dog is small    3

我希望能够在df2中创建一个新列“E”,其中包含基于df1中信息的C列中字符串的“主题”。

所以“猫很大”包含“猫”,因此值应为“Bob”

我想要的输出就是这个。

Out[5]: df3
             C           D     E
0    the cat is big      2    Bob
1    the cat is small    4    Bob
2    the dog is small    3    Joe

1 个答案:

答案 0 :(得分:3)

为df1而不是数据框创建字典。

df1_dict = {'cat':'Bob', 'dog':'Joe', 'bird':'Lary' }

for key, value in df1_dict.iteritems(): df2.loc[df2['C'].str.contains(key),'E'] = value

print df2