我有一个DataFrame,其列为MultiIndex。
我想对列的一个级别进行分组,并使用Apply执行转换。
目标:我希望使用apply传递给函数的DataFrame在索引中没有groupby的键。
从docs看来,这是group_keys
在做什么,但似乎没有效果:
import numpy as np
import pandas as pd
data = {'A': pd.DataFrame(np.random.randn(100, 5)),
'B': pd.DataFrame(np.random.randn(100, 5)),
'C': pd.DataFrame(np.random.randn(100, 5))}
data = pd.concat(data, axis=1, names=['feat_1', 'feat_2'])
def foo(df):
print(df.columns)
return df.sum(1)
我的尝试:
result = data.groupby(level=['feat_1'], axis=1, group_keys=False).apply(foo)
这是在屏幕上打印的内容:
MultiIndex(levels=[['A', 'B', 'C'], [0, 1, 2, 3, 4]],
labels=[[0, 0, 0, 0, 0], [0, 1, 2, 3, 4]],
names=['feat_1', 'feat_2'])
MultiIndex(levels=[['A', 'B', 'C'], [0, 1, 2, 3, 4]],
labels=[[1, 1, 1, 1, 1], [0, 1, 2, 3, 4]],
names=['feat_1', 'feat_2'])
MultiIndex(levels=[['A', 'B', 'C'], [0, 1, 2, 3, 4]],
labels=[[2, 2, 2, 2, 2], [0, 1, 2, 3, 4]],
names=['feat_1', 'feat_2'])
所需的打印输出:如果我正在使用foo
,我希望函数feat_2
接收仅以group_keys=False
作为列的数据框
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
我在文档中缺少什么吗?或者如何实现我想要的(可能不修改foo函数)?
注意:我正在Python 3上使用pandas 0.20.3
python参考方案
与其分组,不如:
for feat1 in data.columns.levels[0]:
print(list(data.columns.levels[1]))
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…
Python:同时在for循环中添加到列表列表 - python我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ['t1', 't2', 't3'] masterlist = [['col1', 'animal1', 'an…
用大写字母拆分字符串,但忽略AAA Python Regex - python我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…
用逗号格式化数字以在Python中分隔成千上万 - python我有一个大数据框,其中有一列称为Lead Rev。此列是一个数字字段,例如(100000或5000等)。我想知道如何格式化这些数字以将逗号显示为千位分隔符。数据集有超过200,000行。是这样的吗:'{:,}'.format('Lead Rev')这给出了这个错误:---------------------------…
快捷项目分配。无法将loc用于项目分配 - python我有一个无法容纳在内存中的镶木地板文件文件夹,因此我正在使用dask来执行数据清理操作。我有一个要执行项目分配的功能,但似乎找不到任何在线解决方案可作为该特定功能的解决方案。以下是在熊猫中起作用的功能。如何在dask数据框中获得相同的结果?我认为延迟可能会有所帮助,但是我尝试编写的所有解决方案都没有起作用。def item_assignment(df): n…