首页 > 解决方案 > 计算列中的值并分配给行

问题描述

我有一个这样的数据框:

    dT_sampleTime   steps      
0        0.002      0.001
1        0.004      0.002
2        0.004      0.003  
3        0.004      0.004  
4        0.003      0.005  
5        0.007      0.006
6        0.001      0.007 

我想计算 dT_sampleTime 列中 step 的值出现的频率,并创建一个新的列绝对频率。

    dT_sampleTime   steps    absolute frequency    
0       0.002       0.001            1              
1       0.004       0.002            1
2       0.004       0.003            1
3       0.004       0.004            3
4       0.003       0.005            0
5       0.007       0.006            0
6       0.001       0.007            1

我的想法是这样的:

df['absolute frequency'] = df.groupby(df['steps'],df['dT_sampleTime']).count

标签: pythonpandaslisthistogram

解决方案


map ' value_countsdt_sampleTime' 列的 'steps' 列。然后用 0 填充缺失值。

df['absolute frequency'] = (df['steps'].map(df['dT_sampleTime'].value_counts())
                                       .fillna(0, downcast='infer'))

#   dT_sampleTime  steps  absolute frequency
#0          0.002  0.001                   1
#1          0.004  0.002                   1
#2          0.004  0.003                   1
#3          0.004  0.004                   3
#4          0.003  0.005                   0
#5          0.007  0.006                   0
#6          0.001  0.007                   1

当使用 Series 进行映射时,它使用索引来查找适当的值。value_counts 系列是

df['dT_sampleTime'].value_counts()
#0.004    3
#0.007    1
#0.001    1
#0.002    1
#0.003    1
#Name: dT_sampleTime, dtype: int64

例如,0.004在步骤列中转到3


推荐阅读