我有一个正在使用的 Dataframe ,我想识别列中特定值的第二个示例,然后将同一行的不同列中的值Map到同一行。下面是一个最简单的示例:
col1 col2
'a' 's'
'b' 's'
'f' 's'
'g' 's'
'b' 's'
'l' 's'
以上是我正在使用的 Dataframe 的一个简短示例,因此我想确定第二次出现的'b'
以及col2
到'p'
的行Map。
因此,输出将是:
col1 col2
'a' 's'
'b' 's'
'f' 's'
'g' 's'
'b' 'p'
'l' 's'
我对 Dataframe 很陌生,所以恐怕没有现有的代码可以使用。我应该提到的是,这个 Dataframe 没有索引,所以不能使用iloc
,否则它将是微不足道的。
2条答案
按热度按时间mwngjboj1#
使用带有两个掩码的布尔索引(等于"b"和(
&
)duplicated
以标识第二个"b"):输出:
中间体:
bfnvny8b2#
将
Series.duplicated
与&
链接用于逐位AND
,并将值与Series.eq
进行比较,然后传递到DataFrame.loc
-此处所有重复值(不含第一个值)均转换为p
:或者通过比较
1
(来自0
的python计数)链接GroupBy.cumcount
以比较第二个值:如果3个或更多值
b
,则解的差异为: