gpt4 book ai didi

python - Pandas 删除行,除非来自另一个数据框中两列的字符串

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

我有一个像这样的大数据框:

ref     leftstr           rightstr
12 fish 10 47 red A45
49 abc bread x10 green 12
116 19 cheese 19A blue blue 4040
118 8 fish 9fish A10 red B11
200 cheese 000 99 green 98
240 142Z cheese B blue 42 12
450 bread 94.16 0.6 red blue
...

还有像这样的大列表:

li = [
'47 red A45 bread fish 10',
'cheese 000 [purple] orangeA 99 green 98',
'bread 94.16 green 12',
'0.6 red blue abc bread x10',
'bread 19 cheese 19A 100 blue blue 4040',
'8 fish 9fish 0.6 red blue',
'bread fish 10 red A45'
...
]

如果 leftstr 和 rightstr 中的确切字符串不存在于列表的任何项目(但必须是同一项目)中,我想从 df 中删除行。 leftstr 或 rightstr 是否首先出现在列表项中,或者列表项中是否有文本以及 leftstr 和 rightstr 都无关紧要。

Desired output:
ref leftstr rightstr
12 fish 10 47 red A45
116 19 cheese 19A blue blue 4040
200 cheese 000 99 green 98

因此,例如,ref 49 被删除,因为尽管 leftstr 和 rightstr 都在一个列表项中,但它们不在同一个列表项中。

最佳答案

你可以试试这个:

# Identify rows to keep
rows_to_keep = []
for item in li:
for i, row, in df.iterrows():
if row["leftstr"] in item and row["rightstr"] in item:
rows_to_keep.append(row["ref"])

# Select rows
filtered_df = df[df["ref"].isin(rows_to_keep)]

print(filtered_df)
# Outputs
ref leftstr rightstr
0 12 fish 10 47 red A45
2 116 19 cheese 19A blue blue 4040
4 200 cheese 000 99 green 98

关于python - Pandas 删除行,除非来自另一个数据框中两列的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68056665/

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