我有一个包含2列的数据框。我在列TXT中搜索数组的元素(已经工作)但我不知道如何将我找到的元素写入变量值。
E.g。在第一行中,df.TXT是' 30m AB'。 ' AB'是列表l的元素。变量值应为' AB'
| Number | TXT |
|--------|--------|
| 1234 | 30m AB |
| 2345 | BLA |
| 3456 | 50g EF |
| 4567 | 1GH |
我的编码:
创建数据框和数组列表:
df = pd.DataFrame(columns=["Number", "TXT"], data=[[1234,'30m AB'],[2345,'BLA'],[3456,'50g EF'],[4567,'1GH']])
l = ['AB','CD','EF','GH']
定义函数以搜索当前行的字符串中的元素:
def fun(row):
value = ''
string = row.TXT
if any(s in string for s in l):
value = # value should be the element of l found in string
return value
for循环为每行df运行功能:
for i, row in df.iterrows():
value = fun(row)
df.set_value(i,'Value',value)
如果您知道如何将列表中的正确元素转换为值,请提供帮助。
谢谢!
答案 0 :(得分:0)
如果我纠错了你,试试这个(阅读评论,有重点):
import pandas as pd
df = pd.DataFrame(
columns=["Number", "TXT"],
data=[
[1234,'30m AB'],
[2345, 'BLA'],
[3456, '50g EF'],
[4567, '1GH'],
[9087, 'AB1 EF'],
[9088, ' AB 1 EF '],
]
)
items = ['AB','CD','EF','GH']
# create a new column
df['Value'] = None
# insert items to the column 'Value'
for idx, row in df.iterrows():
for item in items:
if row['TXT'].strip().endswith(item):
df.at[idx, 'Value'] = item
print df
<强>输出强>
Number TXT Value
0 1234 30m AB AB
1 2345 BLA None
2 3456 50g EF EF
3 4567 1GH GH
4 9087 AB1 EF EF
5 9088 AB 1 EF EF