根据熊猫数据框中的列标签对数据进行分组

Posted

技术标签:

【中文标题】根据熊猫数据框中的列标签对数据进行分组【英文标题】:Group data based on column label in pandas dataframe 【发布时间】:2013-07-30 02:16:35 【问题描述】:

我一直在阅读熊猫数据框中的分层索引和多索引,但似乎这些都是针对有序标签的。例如,我的数据如下所示:

我希望能够根据列标签将数据分组在一起,即。通过平均将第 3 行中带有“d”的所有列聚合在一起。

将这些 excel 数据(或 csv,如果绝对需要)放入数据框以便我可以执行这些操作的最佳方法是什么?我将如何去做?

任何建议或参考将不胜感激

编辑

我尝试使用以下命令从 csv 加载数据:

data = pd.read_csv('Dataset.csv', index_col=0, header=[0,1,2,3], parse_dates=True)

加载时给我这个:

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 18 entries, 2013-05-27 10:31:00 to 2013-07-24 11:31:00
Data columns (total 40 columns):
(1, mix, d, n)     18  non-null values
(2, aq, s, n)      18  non-null values
(3, gr, s, n)      18  non-null values
(4, mix, d, n)     18  non-null values
(5, aq, d, n)      17  non-null values

我只是不确定从那里去哪里。

【问题讨论】:

您从哪里读取数据? Excel 文件还是 CSV?如果是这样,请查看 Python 中的 CSV 模块。 我希望从 excel 中读取,但我确实考虑转换为 csv,然后将标题设置为我希望能够分组的行,但我不知道从哪里开始那里。我将添加一个编辑并告诉你我的意思。 您是否尝试过 data['3'] 之类的 10 分钟。教程节目? 我刚刚观看了视频,但似乎不起作用,它只是给了我一个关键错误。 您可以发布您尝试过的内容以及遇到的错误吗? (也许还有数据本身作为原始文本而不是图像) 【参考方案1】:

您可以按列使用 (axis=1) groupby 并使用 mean

In [11]: df = pd.DataFrame(np.random.randn(4, 3), columns=[[1, 2, 3], ['d', 's', 'd']])

In [12]: df.columns.names = ['PLOT', 'DEPTH']

In [13]: df
Out[13]:
PLOT          1         2         3
DEPTH         d         s         d
0     -0.557490 -1.231495 -0.333703
1      0.513394  1.046577  0.596306
2     -0.404606 -1.615080 -0.694562
3     -0.078497 -0.683405  0.056857

In [14]: df.groupby(level='DEPTH', axis=1).mean()
Out[14]:
DEPTH         d         s
0     -0.445596 -1.231495
1      0.554850  1.046577
2     -0.549584 -1.615080
3     -0.010820 -0.683405

【讨论】:

这正是我想做的!我之前做了一些变化,但没有以正确的方式进行。谢谢!

以上是关于根据熊猫数据框中的列标签对数据进行分组的主要内容,如果未能解决你的问题,请参考以下文章

在熊猫数据框中对重复的列 ID 进行分组

如何同时对熊猫数据框中的列进行排序[重复]

Python - 在熊猫数据框中对列表中的行进行分组

根据列名重新排序熊猫数据框中的列[重复]

根据列名重新排序熊猫数据框中的列[重复]

根据列名重新排序熊猫数据框中的列[重复]