检查列中是不是存在值并在另一个 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】:您可以使用explode
、isin
、agg
和.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 中进行重复检查