python dataframe dropna_在Python中使用熊猫在两个DataFrame之间进行值...

嗨,我有两个像下面的DataFrames

DF1

Alpha | Numeric | Special

and | 1 | @

or | 2 | #

lol ok | 4 | &

DF2 with single column

Content

boy or girl

school @ morn

pyc LoL ok student

Chandra

我想搜索DF1列中的任何人是否在DF2内容列中的任何关键字,并且输出应该在新的DF中

`df11 = (df1.unstack()

.reset_index(level=2,drop=True)

.rename_axis(('col_order','col_name'))

.dropna()

.reset_index(name='val_low'))

df22 = (df2['Content'].str.split(expand=True)

.stack()

.rename('val')

.reset_index(level=1,drop=True)

.rename_axis('idx')

.reset_index())`

df22['val_low'] = df22['val'].str.lower()

df = (pd.merge(df22, df11, on='val_low', how='left')

.dropna(subset=['col_name'])

.sort_values(['idx','col_order'])

.drop_duplicates(['idx']))

df = (pd.concat([df2, df.set_index('idx')], axis=1)

.fillna({'col_name':'Other'})[['val','col_name','Content']])

但它没有考虑大声笑之间的空格

expected_output_DF

val col_name Content

0 or Alpha boy or girl

1 @ Special school @ morn

2 lol ok Alpha pyc LoL ok student

3 NaN Other Chandra

有人帮我这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值