Python 在保持顺序的同时从列表中选择数据

Python 在保持顺序的同时从列表中选择数据,python,pandas,numpy,python-xarray,Python,Pandas,Numpy,Python Xarray,尝试从列表中选择子集,但选择后顺序颠倒 试过用熊猫蛋白吗 df.mon =[1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,...] # selecting results = df[df.month.isin([10,11,12,1,2,3])] print(results.mon] mon = [1,2,3,10,11,12, 1,2,3,10,11,12,...] desired results mon= [10,

尝试从列表中选择子集,但选择后顺序颠倒

试过用熊猫蛋白吗

df.mon =[1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12,...] 
 # selecting 
 results = df[df.month.isin([10,11,12,1,2,3])]
 print(results.mon]
 mon = [1,2,3,10,11,12, 1,2,3,10,11,12,...]
 desired results
 mon= [10,11,12,1,2,3,10,11,12,1,2,3,...]

 # sorting results in this
 mon = [1,1,2,2,3,3,10,10,11,11,12,12] and I dont want that either

 thanks for the help

我主要使用基本的python列表,因此我将df转换为一个列表

资料 数据显示在xlsx文件中,如下所示。 输入是一个xlsx文档,它是1,2。。12, 1, 2, .. 12只有两次,“值”从90开始,以10计数,一直到第二个12

过程 输出:
[10,11,12,1,2,3,10,11,12,1,2,3]
[180,190,200,90,100,110,300,310,320,210,220,230]


假设注释:假设文件中每年都有12个月的时间

在您的情况下,我们使用的是
Categorical
+
cumcount

#results = df[df.mon.isin([10, 11, 12, 1, 2, 3])].copy()
results.mon=pd.Categorical(results.mon,[10,11,12,1,2,3])
s=results.sort_values('mon')
s=s.iloc[s.groupby('mon').cumcount().argsort()]
s
Out[172]: 
   mon
9   10
10  11
11  12
0    1
1    2
2    3
21  10
22  11
23  12
12   1
13   2
14   3

我想你可以把我们每个类别都有的东西拿出来,然后用izip_longest来压缩这些列表

所以我找到了一个相对简单的方法从另一个来源来做这件事

对于可能感兴趣的人:

  df[(df.index > 4) & (df.month.isin([10, 11, 12, 1, 2, 3]))]

但是,第一个
1,2,3
是在
[10,11,12,1,2,3]
这可能会有帮助:非常接近,除了我的新列表应该是[10,11,12,1,2,3,10,11,12,1,2,3…],而不是[10,10,11,11,12,1,1,2,2,3]是的,我觉得这给了我一分钟的时间,那么,如何使用这个新列表正确地子集数据帧的实际值呢?你能给我更多的上下文吗?我不太清楚你的问题,无法给出准确的答案。请说出我的df月值112.2143942-30.1143913 1.343937 4-29.290909 5 22.703789 6 14.211441 7 5.654198 8-28.977440 9 8.361656 10 12.296993 1118.193127 12-20.491604 1 45.214394 2 10.885609 3-14.656063 4 3.709091 5 8.703789 6 24.211441 7-46.345802我想用我的列表来获取每个月的值,比如df[新列表],但目前不起作用
  df[(df.index > 4) & (df.month.isin([10, 11, 12, 1, 2, 3]))]