我正在使用相当混乱的数据:具有以下形式的关税表:
import pandas as pd
import numpy as np
data1 = np.array([u'Free (A, B, KR, FR), 5% (JP)', u'Free (A, B, FR), 5% (JP, KR))'])
data2 = np.array(['10101010', '10101020'])
data = {'hscode': data2, 'tariff' : data1}
df = pd.DataFrame(data, columns=['hscode', 'tariff'])
第一行显示国家(A,B,KR,FR)的关税为零,JP为5%,第二行显示A,B,FR为0,JP和KR为5%.
我想找到每一行国家’KR’的关税税率,以便我可以得到下表:
‘hscode”关税’
10101010 0%
10101020 5%
所以,我想在每个单元格中找到县代码“KR”的关税税率.
最佳答案 您可以使用正则表达式申请:
## -- End pasted text --
In [133]: import re
In [134]: df
Out[134]:
hscode tariff
0 10101010 Free (A, B, KR, FR), 5% (JP)
1 10101020 Free (A, B, FR), 5% (JP, KR))
In [135]: df['tariff'].apply(lambda x: ''.join(re.findall(r'.*(Free|\d+%).*\bKR\b', x)))
Out[135]:
0 Free
1 5%
Name: tariff, dtype: object
解释:在关税内,如果字符串包含“KR”,则捕获“Free”或“x%”.
您可以创建一个函数来动态设置“KR”作为查找变量.