import pandas
df_trade = pandas.DataFrame(
{
"reporter": ["a", "a", "b", "b"],
"reporter_code": [1, 1, 2, 2],
"partner": ["x", "y", "x", "z"],
"partner_code": [24, 25, 24, 26],
"product": ["p", "p", "p", "p"],
"value": [1, 2, 3, 4],
}
)
index = ['reporter', 'product', 'year', 'reporter_code']
df_trade.groupby(index).agg(imp=("value", sum)).reset_index()
--
Out[1]:
index imp
0 product 2
1 reporter 1
2 reporter_code 4
3 year 3
df_trade
中缺少“year”列,为什么groupby
不返回KeyError?
文档
help(df_trade.groupby):
如果传递长度等于选定轴的列表或ndarray(请参见groupby user guide <https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html#splitting-an-object-into-groups>
_),则将按原样使用这些值来确定组。标签或标签列表可以传递给self
中的列进行分组。
也许这是因为我的示例 Dataframe 恰好有4行,与用于groupby的index
列表中的4个项目的数量完全相同。
- 如何防止值被“按原样使用以确定组”?
1条答案
按热度按时间6bc51xsx1#
以这种方式引发错误可确保数据框中存在所有索引列
这不是一个令人满意的答案,我仍然想知道:在这种情况下,是否可以使用pandas.groupby()来自行生成错误?