Python基于datafram中的多个其他列创建列

2024-03-29 13:49:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个新列,根据其他列中的值输出升序或降序

  Index Leg  Map Number
   0     AD  J1   1
   1     AD  J1   2
   2     AD  J1   3
   3     AD  J2   5
   4     AD  J2   3
   4     AF  J1   9
   5     AF  J1   6

因此,看看这个数据帧,我想创建一个新的列“updown”,它根据leg、map和number列升序或降序。基本上,对于每个分支和映射对,请查看数字列以确定数字是升序还是降序…这将产生如下数据帧:

  Index Leg  Map Number Updown
   0     AD  J1   1     ascending
   1     AD  J1   2     ascending
   2     AD  J1   3     ascending
   3     AD  J2   5     descending
   4     AD  J2   3     descending
   4     AF  J1   9     descending
   5     AF  J1   6     descending

任何帮助都将不胜感激


Tags: 数据numbermapindex数字adafj1
1条回答
网友
1楼 · 发布于 2024-03-29 13:49:41

IIUC,你需要:

s=df.groupby(['Leg','Map'])['Number'].transform(lambda x: (x.diff()>0).any())

或:

s=df.groupby(['Leg','Map'])['Number'].transform(lambda x: x.is_monotonic) #thanks Mark Wang
df['Updown']=np.where(s,'ascending','descending')
print(df)

   Index Leg Map  Number      Updown
0      0  AD  J1       1   ascending
1      1  AD  J1       2   ascending
2      2  AD  J1       3   ascending
3      3  AD  J2       5  descending
4      4  AD  J2       3  descending
5      4  AF  J1       9  descending
6      5  AF  J1       6  descending

相关问题 更多 >