我有一个 Pandas 数据框,我想根据重复值的数量增加一列。 因此,当找到重复项时,所有其他出现的次数都会增加。 所以给定这个输入数据框

    SM
 0  AB
 1  AC
 2  AD
 3  AB
 4  AB
 5  AC
 6  AE
 7  AD

返回

     SM DM
  0  AB AB
  1  AC AC
  2  AD AD
  3  AB AB_1
  4  AB AB_2
  5  AC AC_1
  6  AE AE
  7  AD AD_1

我试过这行代码,但我不知道如何递增

 np.where(a.SM.duplicated(keep='first'), a.SM+'_1', a.SM)

#1楼 票数:2 已采纳

使用groupby.cumcountSeries.where

s = df.groupby('SM').cumcount()

df['DM'] = df['SM'].where(s.eq(0), df['SM'] + '_' + s.astype(str))

[出去]

   SM    DM
0  AB    AB
1  AC    AC
2  AD    AD
3  AB  AB_1
4  AB  AB_2
5  AC  AC_1
6  AE    AE
7  AD  AD_1

#2楼 票数:1

dplyr按组创建 counter-1 然后paste()可以为您提供想要的结果:

library(dplyr)
library(tidyr)
# Getting those whose value which Are repeated
df$BoolDup<-duplicated(df$SM)
# Creating counting variable and a second counter that keeps track of the repetitions-1 to then Join if duplicated
df %>% mutate(count = 1) %>% 
  group_by(SM)%>%
  mutate(count2 = cumsum(count)-1) %>%
  mutate(DM = ifelse(BoolDup==TRUE,paste(SM,"_",count2,sep =""), SM))%>%
  dplyr::select(SM=SM, DM=DM)

# A tibble: 8 x 2
# Groups:   SM [4]
# SM    DM   
# <chr> <chr>
# 1 AB    AB   
# 2 AC    AC   
# 3 AD    AD   
# 4 AB    AB_1 
# 5 AB    AB_2 
# 6 AC    AC_1 
# 7 AE    AE   
# 8 AD    AD_1 

  ask by Alessandrini translate from so

未解决问题?本站智能推荐:

1回复

根据 Pandas 中的条件将列值增加一

我创建了一个脚本来抓取 NBA 的逐场比赛数据并将其组织成一个 Pandas 数据框。 在每节结束和比赛结束时,“详细信息”列中会显示以下值: 有没有办法创建一个以数字 1 开头的“季度”列,然后使用“详细信息”列在每个季度结束后增加 1? 例如:
2回复

返回基于其他列python的值最近增加的行

简洁地写出这个问题的标题有些令人困惑。 我有包含integers和相关key Column pandas df 。 当key Column值存在时,我想返回其他Columns中integers最新增量。 对于以下df , key Column为[Area] 。 当X在[Area]
2回复

Pandas,通过单值增加列值来分割数据帧

我有一个巨大的数据框,其中包含一个名为time的日期时间类型列,另一个名为dist的浮点类型列,数据框基于时间排序,而dist已经排序。 我想基于dist的单调增加将数据帧分成几个数据帧。 分裂 成
2回复

如果下面的行重复,则使用其他列中的值,直到找到新值

我有一个棘手的数据操作问题。 基本上,我有一个日期列表。 每天都会计算有多少待解决的问题。 我想创建一个新列ideal_issues_left ,它使用np.linspace计算剩余问题的理想数量,如果它们每天都以稳定的速度完成到日期范围结束时为零。 我已经设法从每个起点创建了每天估计的数据ide
1回复

如何根据不同列中的重复值将数组值移动到新列

我正在将 python 与 numpy 和 pandas 一起使用,并且我有一个如下所示的数据框: 我希望它改变,以便我根据时间拥有“第 1 部分”和“第 2 部分”值.... 像这样。 我实际上不需要索引或标题列。 我只需要时间,第 1 部分和第 2 部分。 我尝试使用下面的代码制作两个
1回复

转置具有重复值的熊猫列

我有一个如下所示的数据框 如您所见,所有列中都有重复的值。 我想转置/旋转它们以获得如下所示的输出。 虽然我尝试了下面它没有用。 我希望我的输出如下所示,其中每一年都作为一行,该年的所有相应条目都作为列。 请注意我没有填写值,因为表列结构更重要。 你能帮我吗?
3回复

熊猫-具有重复值的列的外部联接

这是我关于堆栈溢出的第一个问题,如果我的问题不清楚,请让我知道如何为您提供帮助。 目标:使用Python和Pandas外部连接(或合并)包含不同实验试验的数据集,其中每个试验的“ x”轴极为相似,但有一些偏差。 最重要的是,“ x”轴增加,达到最大值然后减小,通常与以前存在的“ x”点重
2回复

python pandas data-frame-根据列值重复行

我想根据2列值复制数据框“ this”的行,并将它们保存为名为“ newThis”的新数据框: 我想要一大串串联的行,但是我却遇到了这样的麻烦: 谢谢