【发布时间】:2022-01-05 01:29:05
【问题描述】:
我按照这里的例子:(https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#flexible-apply)
数据:
df = pd.DataFrame(
{
"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
"B": ["one", "one", "two", "three", "two", "two", "one", "three"],
"C": np.random.randn(8),
"D": np.random.randn(8),
}
)
按“A”分组,但在“C”列上选择,然后执行应用
grouped = df.groupby('A')['C']
def f(group):
return pd.DataFrame({'original': group,
'demeaned': group - group.mean()})
grouped.apply(f)
一切正常,但是当我尝试使用 groupby'A' 并选择列 'C' 和 'D' 时,我无法成功:
grouped = df.groupby('A')[['C', 'D']]
for name, val in grouped:
print(name)
print(val)
grouped.apply(f)
那么我在这里做错了什么?
谢谢 范
【问题讨论】:
-
你有错误吗?始终将完整的错误消息(从“Traceback”一词开始)作为文本(不是屏幕截图,不是链接到外部门户)有问题(不在 cmets 中)。还有其他有用的信息。
-
对于单列,它给出
pandas.Series,但对于许多列,它给出pandas.DataFrame- 所以它需要在f()中进行更改 - 比如'original_C': group['C'], 'original_D': group['D'], ...
标签: python pandas dataframe pandas-groupby