有了Pandas 群比,我可以做这样的事情:

>>> df = pd.DataFrame(
...     {
...         "A": ["foo", "bar", "bar", "foo", "bar"],
...         "B": ["one", "two", "three", "four", "five"],
...     }
... )
>>> print(df)
     A      B
0  foo    one
1  bar    two
2  bar  three
3  foo   four
4  bar   five
>>> print(df.groupby('A')['B'].unique())
A
bar    [two, three, five]
foo           [one, four]
Name: B, dtype: object

我想要的是生成索引列表而不是B列列表的输出:

A
bar    [1, 2, 4]
foo    [0, 3]

然而,groupby('A').指数unique()不起作用.什么语法可以为我提供我想要的输出?我非常乐意用其他方式来做这件事,而不是使用groupby,尽管我确实需要在我的实际应用程序中按两列进行分组.

推荐答案

您不一定需要在groupby中有标签,您可以使用分组对象.

这可以实现以下功能:

df.index.to_series().groupby(df['A']).unique()

输出:

A
bar    [1, 2, 4]
foo       [0, 3]
dtype: object
getting the indices of the unique B values:
df[~df[['A', 'B']].duplicated()].index.to_series().groupby(df['A']).unique()

Python相关问答推荐

有条件地采样我的大型DF的最有效方法

具有症状的分段函数:如何仅针对某些输入值定义函数?

使用scipy. optimate.least_squares()用可变数量的参数匹配两条曲线

在Pandas DataFrame操作中用链接替换'方法的更有效方法

scikit-learn导入无法导入名称METRIC_MAPPING64'

如何让Flask 中的请求标签发挥作用

如何在python polars中停止otherate(),当使用when()表达式时?

如何在给定的条件下使numpy数组的计算速度最快?

如果值发生变化,则列上的极性累积和

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

如何使用scipy的curve_fit与约束,其中拟合的曲线总是在观测值之下?

如何启动下载并在不击中磁盘的情况下呈现响应?

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

合并与拼接并举

Gunicorn无法启动Flask应用,因为无法将应用解析为属性名或函数调用.'"'' "

处理Gekko的非最优解

递归函数修饰器

如何防止html代码出现在quarto gfm报告中的pandas表之上

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

VSCode Pylance假阳性(?)对ImportError的react