检查列中是不是存在值并在另一个 Pandas 中更改

Posted

技术标签:

【中文标题】检查列中是不是存在值并在另一个 Pandas 中更改【英文标题】:Check if a value exist in a column and change in another Pandas检查列中是否存在值并在另一个 Pandas 中更改 【发布时间】:2022-01-23 23:30:19 【问题描述】:

我有以下信息。

假设我有以下列表。

my_list = [2,3,4,5]

我的数据框如下:

df

Col1      Value
[1,3,6]    Hot
[7]        Mild
[10,11,2]  Cool
[5,9]      Cool
[2,5,6]    Mild

我想检查my_list 列表中的值之一是否存在于Col1 列中。如果存在,将Value列的值修改为对应行的Hot

我希望看到类似下面的内容。

Col1      Value
[1,3,6]    Hot
[7]        Mild
[10,11,2]  Cool
[5,9]      Hot
[2,5,6]    Hot

我只是在寻找一个简单的脚本,它可以迭代并检查每一行,并在对应行的另一列中更改一个值。

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

您可以使用explodeisinagg.loc 的组合:

df.loc[df['Col1'].explode().isin(my_list).groupby(level=0).any(), 'Value'] = 'Hot'

输出:

>>> df
          Col1 Value
0    [1, 3, 6]   Hot
1          [7]  Mild
2  [10, 11, 2]   Hot
3       [5, 9]   Hot
4    [2, 5, 6]   Hot

【讨论】:

完美答案! 嗨,我有附加列的附加条件。例如,名为 sum 的列应大于 0 以替换该值。如果你可以添加这个,我还能编辑问题吗? 您介意在新问题中提出这个问题吗?以使答案无效的方式编辑问题被认为是不好的做法。 好的!会这样做。

以上是关于检查列中是不是存在值并在另一个 Pandas 中更改的主要内容,如果未能解决你的问题,请参考以下文章

Pandas str.contains - 在字符串中搜索多个值并在新列中打印值[重复]

Pandas - 在两列中查找具有匹配值的行并在另一列中相乘

将行与标题进行比较,然后在列中插入值并在 VBA 中进行重复检查

excel中如何检查一列中的内容是不是包含在另一个文档的一列中。

检查列表中的单词并在 pandas 数据框列中删除这些单词

Pandas:根据字符串的一部分是不是在另一列中的任何位置创建新列