gpt4 book ai didi

python - 使用python删除pandas DataFrame中的子字符串

转载 作者:行者123 更新时间:2023-12-04 09:37:12 25 4
gpt4 key购买 nike

如果当前索引处的术语是以下术语的子字符串,我希望我的 Python 脚本删除 DataFrame 中的一行。而且,如果以下术语是当前索引处的术语的子字符串。
在下面的示例中,只应保留带有术语“A 600 Strom”的最后一个数据集以及“Silent”。

    term            timestamp
83 A 6 2018-09-27 18:26:46
85 A 60 2018-09-27 18:26:46
86 A 600 2018-09-27 18:26:46
89 A 600 2018-09-27 18:26:47
91 A 600 S 2018-09-27 18:26:47
93 A 600 Str 2018-09-27 18:26:48
95 A 600 Stro 2018-09-27 18:26:49
97 A 600 Str 2018-09-27 18:26:53
98 A 600 Strom 2018-09-27 18:26:5
99 S 2018-09-27 18:26:48
100 Sil 2018-09-27 18:26:49
101 Silen 2018-09-27 18:26:53
102 Silent 2018-09-27 18:26:5

是否有优雅有效的解决方案,或者我是否必须在循环中处理一系列 if 语句?

最佳答案

使用, Series.shift 转移 term列并将其分配给 new_column s_1然后使用 DataFrame.agg 沿axis=1创建一个 bool 值 mask通过比较前一项和下一项 (s_1)并比较下一项 (s_1)到上一届。最后用这个mask过滤数据框:

mask = (
df.assign(s_1=df['term'].shift(-1).astype(str))
.agg(lambda s: s['term'] in s['s_1'] or s['s_1'] in s['term'], axis=1)
)

df1 = df[~mask]
结果:
# print(df1)
term timestamp
98 A 600 Strom 2018-09-27 18:26:53

关于python - 使用python删除pandas DataFrame中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62518336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com