python dataframe列数_python-减少pandas DataFrame中的列数

我正在尝试在seaborn中创建一个小提琴图.输入是pandas DataFrame,它看起来是为了沿x轴分离数据,我需要在单个列上进行区分.我目前有一个DataFrame,它具有几个传感器的浮点值:

>>>df.columns

Index('SensorA', 'SensorB', 'SensorC', 'SensorD', 'group_id')

也就是说,每个Sensor [A-Z]列均包含一堆数字:

>>>df['SensorA'].head()

0 0.072706

1 0.072698

2 0.072701

3 0.072303

4 0.071951

Name: SensorA, dtype: float64

对于这个问题,我只对2个小组感兴趣:

>>>df['group_id'].unique()

'1', '2'

我希望每个传感器在x轴上都是一个单独的小提琴.

我认为这意味着我需要将其转换为以下形式:

>>>df.columns

Index('Value', 'Sensor', 'group_id')

新数据帧中的“传感器”列包含文本“ SensorA”,“ SensorB”等,新数据帧中的“值”列包含每个Sensor [A-Z]列中的原始值,并保留组信息.

然后,我可以使用以下命令创建小提琴图:

ax = sns.violinplot(x="Sensor", y="Value", hue="group_id", data=df)

我认为我有点需要做一个反向枢纽.有一个简单的方法吗?

解决方法:

使用熊猫的融化功能

import pandas as pd

import numpy as np

df = pd.DataFrame({'SensorA':[1,3,4,5,6], 'SensorB':[5,2,3,6,7], 'SensorC':[7,4,8,1,10], 'group_id':[1,2,1,1,2]})

df = pd.melt(df, id_vars = 'group_id', var_name = 'Sensor')

print df

group_id Sensor value

0 1 SensorA 1

1 2 SensorA 3

2 1 SensorA 4

3 1 SensorA 5

4 2 SensorA 6

5 1 SensorB 5

6 2 SensorB 2

7 1 SensorB 3

8 1 SensorB 6

9 2 SensorB 7

10 1 SensorC 7

11 2 SensorC 4

12 1 SensorC 8

13 1 SensorC 1

14 2 SensorC 10

标签:pandas,seaborn,python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值