如何仅替换数据帧熊猫中最大值的第一个实例?

kingjames23

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

NAME   MONTH  TIME
Paul    Jan     3
Paul    Sept    1
Joe      Jan    3
Joe     Aug     3

然后我使用支点将其转换为这样的df:

NAME JAN SEPT AUG 
Paul  3    1   0
Joe   3    0   3

现在,我正在创建一个新列,每一行的价值最大,它看起来像这样:

NAME JAN SEPT AUG 1_MAX
Paul  3    1   0    3
Joe   3    0   3    3

然后,我在一个临时数据帧中将0分配给旧的最大值,现在得到第二个最大值,如下所示:

NAME JAN SEPT AUG 1_MAX 2_MAX
Paul  3    1   0    3     1
Joe   3    0   3    3     3

但是因为乔的值是2的3,所以在1月和8月,当我将0分配给最大的值时,对于首次出现最大值的JAN,应该将其分配为3,因此所有最大实例的值都变为0。变成这样,这不是我想要的:

NAME JAN SEPT AUG 1_MAX 2_MAX
Paul  3    1   0    3     1
Joe   3    0   3    3     0

我正在使用:

f_temp1 = df_temp1.apply(lambda x: x.replace(max(x), 0), axis = 1)

将最大值更改为零,但这将替换所有最大值,我想在行第一次出现时替换该行的最大值。

我需要一个通用的解决方案,因为我正在处理一个大数据框。

安塞夫

采用:

df[['1_MAX','2_MAX']]=(df.loc[:,'JAN':]
                         .apply(lambda x: pd.Series(np.sort(np.unique(x))[-2:]),
                                axis=1)
                         .loc[:,[1,0]])
print(df)
   NAME  JAN  SEPT  AUG  1_MAX  2_MAX
0  Paul    3     1    0      3      1
1   Joe    3     0    3      3      0

初始df

   NAME  JAN  SEPT  AUG
0  Paul    3     1    0
1   Joe    3     0    3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何找到每个组的第一个局部最大值?

熊猫:返回值的第一个实例和最后一个实例的索引值

如何在NumPy数组中找到第一个局部最大值?

熊猫在一个列中检索对应于另一列中最大值的值

如何在Java ArrayList中返回第一个最大值

用NA替换数据帧行中的第一个重复数据

熊猫-仅保留列值的第一个实例(用空字符串替换其余部分)

数据属性仅返回第一个值

如何从数据帧组的第一个值创建增量var?

如何在C ++中找到第一个最大值?

根据数据帧R上成功第一个值的条件替换第二个值

替换熊猫中dataframe行的第一个最大价值?

如何替换列表中的值的第一个实例

在PySpark列的列表列表中获取第一个元素的最大值

合并熊猫数据框时如何仅使用第一个匹配项?

查找最大值并过滤第一个值

熊猫数据框仅读取第一个值,NaN用于其他所有内容

将一个熊猫数据帧合并到另一个熊猫数据帧,并从第二个数据帧中删除第一个数据帧中存在的值

在MySQL中使用TOP 1选择第一个最大值?

仅替换角色的第一个实例

用数据帧中连续行中的第一个值替换最后一个值

仅当其他值不存在时,如何在第一个实例之后删除后续值

在满足熊猫数据帧中条件的数据帧位置处返回第一个值的位置

如何仅替换字符串的第一个实例

Numpy - 在多个轴上设置第一个最大值

比较R中最大值的两列时如何排除一个值

基于第一个表中的值的连接表中的最大值

如何在多个数组中找到最大值并返回java中第一个索引的值?

计算熊猫中第一个和第二个最大值之间的行数