【问题标题】:pandas.DataFrame.groupby loses index and messes up the datapandas.DataFrame.groupby 丢失索引并弄乱数据
【发布时间】:2023-02-17 16:24:21
【问题描述】:

我有一个pandas.DataFrame(名为df),其中包含以下数据:

          labels               texts
0         labelA  Some Text 12345678
1         labelA  Some Text 12345678
2         labelA  Some Text 12345678
3         labelA  Some Text 12345678
4         labelB  Some Text 12345678
5         labelB  Some Text 12345678
6         labelB  Some Text 12345678
7         labelC  Some Text 12345678
8         labelC  Some Text 12345678
9         labelC  Some Text 12345678
10        labelC  Some Text 12345678
11        labelC  Some Text 12345678
12        labelC  Some Text 12345678

当我使用以下命令执行分组时(目标是从每个标签中获取 2 个样本),索引丢失了:

grouped = df.groupby('labels')
result = grouped.apply(lambda x: x.sample(n=2))
print(result)

输出变为:

                    labels               texts
labels
labelA    0         labelA  Some Text 12345678
          0         labelA  Some Text 12345678
          0         labelB  Some Text 12345678
          0         labelB  Some Text 12345678
          0         labelC  Some Text 12345678
          0         labelC  Some Text 12345678

我希望输出变成:

          labels               texts
0         labelA  Some Text 12345678
1         labelA  Some Text 12345678
2         labelB  Some Text 12345678
3         labelB  Some Text 12345678
4         labelC  Some Text 12345678
5         labelC  Some Text 12345678

我应该如何进行更改?

我尝试根据this answer使用result.dropout(0).reset_index(),但它变成了:

     index         labels               texts
0        0         labelA  Some Text 12345678
1        0         labelA  Some Text 12345678
2        0         labelB  Some Text 12345678
3        0         labelB  Some Text 12345678
4        0         labelC  Some Text 12345678
5        0         labelC  Some Text 12345678

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用:

    grouped = df.groupby('labels', group_keys=False)
    result = grouped.apply(lambda x: x.sample(n=2))
    print(result)
    

    或者:

    grouped = df.groupby('labels')
    result = grouped.apply(lambda x: x.sample(n=2)).reset_index(drop=True)
    print(result)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-07
      • 2013-12-26
      • 2015-07-20
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 2013-07-18
      • 2011-04-07
      相关资源
      最近更新 更多