猿问

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

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


例子:


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

条件:如果名称与新列匹配,则检查前一行的编号并填写相同的编号,否则填写下一个编号。它与 dense_rank() 非常相似,但我不想在这里使用 dense_rank 概念。那么这个栏目有什么办法可以填吗?


斯蒂芬大帝
浏览 146回答 1
1回答

幕布斯7119047

使用.cumsum()布尔系列:df['order'] = (df['Name'] != df['Name'].shift()).cumsum()print(df)印刷:   Name  Age  order0   Tom   20      11  nick   21      22  nick   19      23  jack   18      34  shiv   21      45  shiv   22      46   jim   23      5
随时随地看视频慕课网APP

相关分类

Python
我要回答