Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—基于数据帧中的多个其他列创建列_Python_Pandas_Dataframe - Fatal编程技术网

Python—基于数据帧中的多个其他列创建列

Python—基于数据帧中的多个其他列创建列,python,pandas,dataframe,Python,Pandas,Dataframe,我想创建一个新列,它根据其他列中的值输出升序或降序 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
   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
任何帮助都将不胜感激,您需要:

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



“对于每条腿,如果地图相同,请查看数字列以确定顺序…”
如何?逻辑是什么?我不清楚输入是如何映射到输出的。您可能应该在这里为示例数据解释为什么使用
升序
/
降序
。我已经纠正了这个问题@harvpan您如何确定配对的第一次出现?@harvpan您可以通过查看每个配对来确定,而不仅仅是第一次出现的配对,只是一个快速的评论,实际上,groupby有一个
是单调递增的
方法
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