如何根据数据框中其他列的值填充列?

时间:2020-06-03 09:00:59

标签: python python-3.x pandas dataframe

我正在尝试根据某些条件填充该列。你能帮我怎么做吗?

示例:

df:

   Name  Age
0   Tom   20
1  nick   21
2  nick   19
3  jack   18
4  shiv   21
5  shiv   22
6  jim    23

我用另外一列创建了数据框: df ['New'] = df ['Name']。shift()

   Name  Age  New
0   Tom   20  NaN
1  nick   21  Tom
2  nick   19  nick
3  jack   18  nick
4  shiv   21  jack
5  shiv   22  shiv
6  jim    23  shiv

预期输出:

   Name  Age  New  order
0   Tom   20  NaN   1
1  nick   21  Tom   2
2  nick   19  nick  2
3  jack   18  nick  3
4  shiv   21  jack  4
5  shiv   22  shiv  4
6  jim    23  shiv  5

条件: 如果“名称”与“新建”列匹配,则检查前一个行号,并将该数字填充为相同的数字,否则填充下一个数字。 它很安静,类似于density_rank(),但我不想在这里使用density_rank概念。那么有什么方法可以填充此列?

1 个答案:

答案 0 :(得分:1)

在布尔系列上使用m = test==0 ((m[:-1]) & (~m[1:])).sum()

.cumsum()

打印:

df['order'] = (df['Name'] != df['Name'].shift()).cumsum()

print(df)