Python 具有已建立范围的第一个值的新列
如何添加一个新列,其中包含以前计算的每个范围的第一个值,并将这些值并排重复(在范围内) 这是我用来创建“类别”的代码:Python 具有已建立范围的第一个值的新列,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,如何添加一个新列,其中包含以前计算的每个范围的第一个值,并将这些值并排重复(在范围内) 这是我用来创建“类别”的代码: bins=[0, 0.04439, 0.08878, 0.13317, 0.17756, 0.22195, 0.26634, 0.31073, 0.35512, 0.39951, 0.4439, 0.48829, 0.53268, 0.57707, 0.62146, 0.66585, 0.71024, 0.75463, 0.79902] df3['categ
bins=[0, 0.04439, 0.08878, 0.13317, 0.17756, 0.22195, 0.26634, 0.31073,
0.35512, 0.39951, 0.4439, 0.48829, 0.53268, 0.57707, 0.62146, 0.66585,
0.71024, 0.75463, 0.79902]
df3['categories'] = pd.cut(df3['Distance(m)'], bins)
df8 = df3.groupby('categories')['Hauteur_Acum(cm)'].agg({'max': 'max',
'min': 'min', 'average': 'mean'})
这是按范围创建第一个值DF的代码:
df81 = df3.groupby('categories')['Hauteur_Acum(cm)'].agg({'value':
'first'})
df3是:
Hauteur_Acum(cm) categories
0 0.000000 35.760384 ... 0.000000 NaN
1 0.002222 155.800401 ... 0.047999 (0.0, 0.0444]
2 0.002963 372.240662 ... 0.538474 (0.0, 0.0444]
3 0.005185 571.810684 ... 1.094536 (0.0, 0.0444]
4 0.006666 758.715072 ... 1.243944 (0.0, 0.0444]
5 0.008888 941.509872 ... 1.246167 (0.0, 0.0444]
6 0.010369 1022.736674 ... 1.432927 (0.0, 0.0444]
7 0.012591 1112.566566 ... 1.508076 (0.0, 0.0444]
8 0.014813 1132.676551 ... 1.417364 (0.0, 0.0444]
9 0.015554 1114.860993 ... 1.419143 (0.0, 0.0444]
我想插入一个名为df3['First_values']的新列,第一个值在range列旁边的range内重复出现
我尝试过以下代码:
df3['First_value(cm)']= np.where(df3['categories'] == '(0.0, 0.0444]', df81.iat[0,0],'')
。。。但还是不行
这就是我想要的:
有人有什么建议吗
谢谢大家! 我已经尝试了很多方法来解决这个问题,下面的代码是我唯一找到的 每个类别的第一个值
df81 = df3.groupby('categories')['Hauteur_Acum(cm)'].agg({'First_value(cm)': 'first'})
我已将df3['categories']
重命名为df3['n_cat']
,因为它是一个分类系列,更容易识别为1,2,3,4。。。。直到18岁
df3['n_cat'] = df3['categories']
df3['n_cat'] = df3['n_cat'].cat.rename_categories([1, 2, 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])
我将“data”列添加到df81数据帧中
df81['data']= [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
然后,通过标识类别的编号(1,2…直到18),我将df81.iat[0,0]值分配给新的df3['donnees']列
我不太喜欢这个部分,因为代码太长了
df3.loc[df3['n_cat'] == 1, 'donnees'] = df81.iat[0,0]
df3.loc[df3['n_cat'] == 2, 'donnees'] = df81.iat[1,0]
df3.loc[df3['n_cat'] == 3, 'donnees'] = df81.iat[2,0]
df3.loc[df3['n_cat'] == 4, 'donnees'] = df81.iat[3,0]
df3.loc[df3['n_cat'] == 5, 'donnees'] = df81.iat[4,0]
df3.loc[df3['n_cat'] == 6, 'donnees'] = df81.iat[5,0]
df3.loc[df3['n_cat'] == 7, 'donnees'] = df81.iat[6,0]
df3.loc[df3['n_cat'] == 8, 'donnees'] = df81.iat[7,0]
df3.loc[df3['n_cat'] == 9, 'donnees'] = df81.iat[8,0]
df3.loc[df3['n_cat'] == 10, 'donnees'] = df81.iat[9,0]
df3.loc[df3['n_cat'] == 11, 'donnees'] = df81.iat[10,0]
df3.loc[df3['n_cat'] == 12, 'donnees'] = df81.iat[11,0]
df3.loc[df3['n_cat'] == 13, 'donnees'] = df81.iat[12,0]
df3.loc[df3['n_cat'] == 14, 'donnees'] = df81.iat[13,0]
df3.loc[df3['n_cat'] == 15, 'donnees'] = df81.iat[14,0]
df3.loc[df3['n_cat'] == 16, 'donnees'] = df81.iat[15,0]
df3.loc[df3['n_cat'] == 17, 'donnees'] = df81.iat[16,0]
df3.loc[df3['n_cat'] == 18, 'donnees'] = df81.iat[17,0]
但还是。。。。这段代码解决了这个问题
也许有人能帮我简化代码。我已经尝试了很多方法来解决这个问题,下面的代码是我唯一找到的 每个类别的第一个值
df81 = df3.groupby('categories')['Hauteur_Acum(cm)'].agg({'First_value(cm)': 'first'})
我已将df3['categories']
重命名为df3['n_cat']
,因为它是一个分类系列,更容易识别为1,2,3,4。。。。直到18岁
df3['n_cat'] = df3['categories']
df3['n_cat'] = df3['n_cat'].cat.rename_categories([1, 2, 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])
我将“data”列添加到df81数据帧中
df81['data']= [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
然后,通过标识类别的编号(1,2…直到18),我将df81.iat[0,0]值分配给新的df3['donnees']列
我不太喜欢这个部分,因为代码太长了
df3.loc[df3['n_cat'] == 1, 'donnees'] = df81.iat[0,0]
df3.loc[df3['n_cat'] == 2, 'donnees'] = df81.iat[1,0]
df3.loc[df3['n_cat'] == 3, 'donnees'] = df81.iat[2,0]
df3.loc[df3['n_cat'] == 4, 'donnees'] = df81.iat[3,0]
df3.loc[df3['n_cat'] == 5, 'donnees'] = df81.iat[4,0]
df3.loc[df3['n_cat'] == 6, 'donnees'] = df81.iat[5,0]
df3.loc[df3['n_cat'] == 7, 'donnees'] = df81.iat[6,0]
df3.loc[df3['n_cat'] == 8, 'donnees'] = df81.iat[7,0]
df3.loc[df3['n_cat'] == 9, 'donnees'] = df81.iat[8,0]
df3.loc[df3['n_cat'] == 10, 'donnees'] = df81.iat[9,0]
df3.loc[df3['n_cat'] == 11, 'donnees'] = df81.iat[10,0]
df3.loc[df3['n_cat'] == 12, 'donnees'] = df81.iat[11,0]
df3.loc[df3['n_cat'] == 13, 'donnees'] = df81.iat[12,0]
df3.loc[df3['n_cat'] == 14, 'donnees'] = df81.iat[13,0]
df3.loc[df3['n_cat'] == 15, 'donnees'] = df81.iat[14,0]
df3.loc[df3['n_cat'] == 16, 'donnees'] = df81.iat[15,0]
df3.loc[df3['n_cat'] == 17, 'donnees'] = df81.iat[16,0]
df3.loc[df3['n_cat'] == 18, 'donnees'] = df81.iat[17,0]
但还是。。。。这段代码解决了这个问题
也许有人可以帮助我减少或简化我的代码