【发布时间】:2020-05-22 08:07:37
【问题描述】:
我需要根据条件合并以下df1 和df2:如果df1 中的address 包含df2 中的state。
df1:
address \
0 Cecilia Chapman 711-2880 Nulla St. Mankato Mississippi 96522 (257) 563-7401
1 Iris Watson P.O. Box 283 8562 Fusce Rd. Frederick Nebraska 20620 (372) 587-2335
2 Celeste Slater 606-3727 Ullamcorper. Street Roseville NH 11523 (786) 713-8616
3 Theodore Lowe Ap #867-859 Sit Rd. Azusa New York 39531 (793) 151-6230
4 Calista Wise 7292 Dictum Av. San Antonio MI 47096 (492) 709-6392
quantity price
0 2 20
1 3 13
2 5 23
3 3 32
4 5 45
df2:
id state
0 1 Mississippi
1 2 Nebraska
2 3 New York
我的预期输出将是这样的。我怎么能那样做?谢谢。
address \
0 Cecilia Chapman 711-2880 Nulla St. Mankato Mississippi 96522 (257) 563-7401
1 Iris Watson P.O. Box 283 8562 Fusce Rd. Frederick Nebraska 20620 (372) 587-2335
2 Celeste Slater 606-3727 Ullamcorper. Street Roseville NH 11523 (786) 713-8616
3 Theodore Lowe Ap #867-859 Sit Rd. Azusa New York 39531 (793) 151-6230
4 Calista Wise 7292 Dictum Av. San Antonio MI 47096 (492) 709-6392
quantity price id state
0 2 20 1.0 Mississippi
1 3 13 2.0 Nebraska
2 5 23 NaN NaN
3 3 32 3.0 New York
4 5 45 NaN NaN
更新:pat = '|'.join(r"\b{}\b".format(x) for x in df2['state']);
print(df1['address'].str.extract('('+ pat + ')', expand=False))的输出
0 1 2 3 4 5 6 7 8 9 ... 40 41 42 \
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN
.. ... ... ... ... ... ... ... ... ... ... ... ... ... ...
158 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN
159 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN
【问题讨论】:
-
对不起,我不这么认为。 :(
标签: python string pandas dataframe