【问题标题】:Pandas reset_index(drop=True) not working correctly with groupbyPandas reset_index(drop=True) 无法与 groupby 一起正常工作
【发布时间】:2021-05-29 11:30:18
【问题描述】:

我有一个如下的熊猫数据框:

data = {
    'user_id': [1, 1, 1, 1, 1, 2],
    'tag_id': [700, 700, 700, 701, 701, 700],
    'score': [1, 0.9, 0.8, 0.7, 1, 0.6]
}
df = pd.DataFrame(data)
>>> df
   user_id  tag_id  score
0        1     700    1.0
1        1     700    0.9
2        1     700    0.8
3        1     701    0.7
4        1     701    1.0
5        2     700    0.6

然后我在我的 DataFrame 上应用了一个groupby 操作,如下所示,它基本上将一组分数相加,但它不会删除索引

df = df.groupby(['user_id', 'tag_id'], as_index=False).sum().reset_index(drop=True)
>>> df
   user_id  tag_id  score
0        1     700    2.7
1        1     701    1.7
2        2     700    0.6

我也尝试删除as_index参数,但它删除了其他列,仍然没有删除索引:

df = df.groupby(['user_id', 'tag_id']).sum().reset_index(drop=True)
>>> df
   score
0    2.7
1    1.7
2    0.6

关于如何删除这些索引有什么想法吗?

【问题讨论】:

  • 它按预期正常工作
  • 你总会有一个带有 pandas Dataframe 的索引,它不完全像一个 numpy 数组。
  • 感谢您提供了一个很好的可重现 pandas 示例。
  • Pandas 将始终显示索引和列。如果没有设置索引,它将使用默认索引 (pd.RangeIndex)。如果您不想要这种行为,请定义您自己的索引:df.set_index('user_id')
  • df.to_sql(index=False)

标签: python python-3.x pandas dataframe pandas-groupby


【解决方案1】:

comments OP 中表达了自己的目标

我想用 df.to_sql 命令存储这个没有索引的 DataFrame 入数据库。我的主要问题是如何忽略这些索引

为此,在pandas.DataFrame.to_sql 中传递index=false 可以解决问题

df.to_sql(index=False) 

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多