按列名称分组/取消堆叠

2024-09-27 07:23:50 发布

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

我有一个具有以下结构的数据帧

    idx  value  Formula_name
0   123456789     100     Frequency No4
1   123456789     150     Frequency No25
2   123456789     125     Frequency No27
3   123456789     0.2     Power Level No4
4   123456789     0.5     Power Level No25
5   123456789     -1.0    Power Level No27
6   123456789     32      SNR  No4
7   123456789     35      SNR  No25
8   123456789     37      SNR  No27
9   111222333     ...

所以把频率与其对应的度量联系起来的唯一方法就是通过频率的数量。我知道可能的范围(从100兆赫到200兆赫,步长为25兆赫),但不知道哪些频率(或多少)显示在数据中,也不知道哪个“数字”用于将频率与指标联系起来。在

我想得到一个类似的数据帧:

^{pr2}$

对于一个度量,我创建了两个数据帧,一个具有频率,一个具有度量,并将它们合并到数字上:

     idx         Formula_x  value_x number   Formula_y  value_y
0    123456789   SNR        32      4        frequency  100
1    123456789   SNR        35      25       frequency  150

然后我将取消数据帧的堆栈:

df.groupby(['idx','value_y']).first()[['value_x']].unstack()

我不知道如何在多个指标中应用这些指标,但我不能在多个指标中应用。在

任何意见和建议都将是非常欢迎的。在


Tags: 数据度量value数字指标level频率power
1条回答
网友
1楼 · 发布于 2024-09-27 07:23:50

您可以使用:

print (df)
         idx  value      Formula_name
0  123456789  100.0     Frequency No4
1  123456789  150.0    Frequency No25
2  123456789  125.0    Frequency No27
3  123456789    0.2   Power Level No4
4  123456789    0.5  Power Level No25
5  123456789   -1.0  Power Level No27
6  123456789   32.0           SNR No4
7  123456789   35.0          SNR No25
8  123456789   37.0          SNR No27

#create new columns from Formula_name
df[['a','b']] = df.Formula_name.str.rsplit(n=1, expand=True)

#maping by Series column b - from No4, No25 to numbers 100,150...
maps = df[df.a == 'Frequency'].set_index('b')['value'].astype(int)
df['b'] = df.b.map(maps)

#remove rows where is Frequency, remove column Formula_name
df1 = df[df.a != 'Frequency'].drop('Formula_name', axis=1)
print (df1)
         idx  value            a    b
3  123456789    0.2  Power Level  100
4  123456789    0.5  Power Level  150
5  123456789   -1.0  Power Level  125
6  123456789   32.0          SNR  100
7  123456789   35.0          SNR  150
8  123456789   37.0          SNR  125

两种解决方案-有^{}^{}。在

^{2}$

相关问题 更多 >

    热门问题