我有一个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
以下是使用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
如果没有文本中的数据,我将不会测试以下内容,它们应该可以工作:
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