我有一个DataFrame,其中的人物名称和某些名称由于硒的刮擦而导致错误捕获的姓氏 所以我想删除它们
输入:
TEXT TYPE
0 Barrack Obama PERSON
1 Obama PERSON
2 Don Beyer PERSON
3 Doug Wilson PERSON
4 Wilson PERSON
5 Thomas PERSON
预期产量
TEXT TYPE
0 Barrack Obama PERSON
1 Don Beyer PERSON
2 Doug Wilson PERSON
3 Thomas PERSON
答案 0 :(得分:3)
如果没有文本形式的数据,我将不会进行以下测试,这应该可以工作:
df.groupby(df.TEXT.str.extract('(\w*)$')[0],
sort=False, as_index=False
).first()
输出:
TEXT TYPE
0 Barrack Obama PERSON
1 Don Beyer PERSON
2 Doug Wilson PERSON
3 Thomas PERSON
答案 1 :(得分:3)
这是使用duplicated()
df[~df['TEXT'].str.split().str[-1].duplicated()]
或者:
df[~df['TEXT'].str.split(expand=True).ffill(1).iloc[:,-1].duplicated()]
或者:
df[~df['TEXT'].str.split(expand=True).ffill(1).duplicated([1])]
TEXT TYPE
0 Barrack Obama PERSON
2 Don Beyer PERSON
3 Doug Wilson PERSON
5 Thomas PERSON