gpt4 book ai didi

python - 如何在 Pandas 数据框中获取格式正确的索引

转载 作者:行者123 更新时间:2023-11-28 17:14:20 27 4
gpt4 key购买 nike

有这样一个数据框:

>>> df = pd.DataFrame({'name': ['foo', 'foo', 'bar', 'bar'],
'colx': [1, 2, 3, 4],
'coly': [5, 6, 7, 8]})
>>> df.set_index('name', inplace=True)
>>> df
colx coly
name
foo 1 5
foo 2 6
bar 3 7
bar 4 8

如何获得格式正确的索引,例如:

      colx  coly
name
foo 1 5
2 6
bar 3 7
4 8

这样 pandas 就不会提示重复的索引。

最佳答案

一个(在许多选项中)是添加一个新的索引级别:

In [49]: df = df.set_index(df.groupby(level=0).cumcount().add(1) \
.to_frame('num')['num'],
append=True)

In [50]: df
Out[50]:
colx coly
name num
foo 1 1 5
2 2 6
bar 1 3 7
2 4 8

更新:不要对 Pandas 在多索引中显示重复项的方式感到困惑:

如果我们选择多索引的 name 级别的所有值,我们仍然会看到重复项:

In [51]: df.index.get_level_values(0)
Out[51]: Index(['foo', 'foo', 'bar', 'bar'], dtype='object', name='name')

这正是 Pandas 在多索引中表示重复项的方式。我们可以关闭这个显示选项:

In [53]: pd.options.display.multi_sparse = False

In [54]: df
Out[54]:
colx coly
name num
foo 1 1 5
foo 2 2 6
bar 1 3 7
bar 2 4 8

In [55]: pd.options.display.multi_sparse = True

In [56]: df
Out[56]:
colx coly
name num
foo 1 1 5
2 2 6
bar 1 3 7
2 4 8

PS 这个选项不会改变索引值,它只影响multi-indices 的表示

关于python - 如何在 Pandas 数据框中获取格式正确的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45290725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com