我有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
答案 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