我有以下问题
import pandas as pd
data = {
"ID": [420, 380, 390, 540, 520, 50, 22],
"duration": [50, 40, 45,33,19,1,3],
"next":["390;50","880;222" ,"520;50" ,"380;111" ,"810;111" ,"22;888" ,"11" ]
}
#load data into a DataFrame object:
df = pd.DataFrame(data)
print(df)
如你所见
ID duration next
0 420 50 390;50
1 380 40 880;222
2 390 45 520;50
3 540 33 380;111
4 520 19 810;111
5 50 1 22;888
6 22 3 11
注意事项:
- ID类型为整型
- next类型是一个字符串,数字之间用;如果多于两个数字
我想过滤ID中没有next的行
例如在这个例子中
- 420在390和50中均有随访
- 380具有下一个880和222,这两个都不在ID中,因此这一个
- 540具有下一个380和111,而111不在ID中,因此380不是此ID
- 与50相同
最后我想得到
在只有一个值的情况下,我使用了print(df[~df.next.astype(int).isin(df.ID)])
,但在这种情况下,isin
不能简单地应用。
我该怎么做呢?
2条答案
按热度按时间gopyfrb31#
让我们尝试使用
split
,然后使用isin
检查explode
htzpubme2#
使用带单词边界的正则表达式以提高效率:
输出: