📜  pandas 追加索引忽略 - Python (1)

📅  最后修改于: 2023-12-03 15:33:24.969000             🧑  作者: Mango

Pandas追加索引忽略 - Python

Pandas是一个强大的Python库,用于处理数据,它提供了丰富的数据结构和函数,可以处理以各种方式组织或存储的数据。

在Pandas中,我们可以使用index来标识每个数据项的唯一性,索引是建立在Pandas的Series和DataFrame数据结构上的。然而有时候我们可能会遇到一个问题,即追加新的索引到已有的DataFrame时会忽略新索引。

问题描述

假设我们有一个包含以下内容的DataFrame:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])
print(df)
   A  B
a  1  4
b  2  5
c  3  6

现在,我们想要向这个DataFrame中添加一个新列,并设置用作索引的新值:

df['C'] = [7, 8, 9]
df = df.set_index(['C'], append=True)
print(df)
     A  B
  C      
a 7  1  4
b 8  2  5
c 9  3  6

大家会发现,新索引被无视了,而默认的整数索引被使用了。

解决方法

为了解决这个问题,我们可以使用reindex函数来指定索引:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c'])
print(df)

df['C'] = [7, 8, 9]
df = df.set_index(['C'], append=True)

new_index = pd.MultiIndex.from_tuples(df.index.values)
df = df.reindex(index=new_index)

print(df)
   A  B
a  1  4
b  2  5
c  3  6
      A  B
  C      
7 a  1  4
8 b  2  5
9 c  3  6

我们可以看到,新索引成功地被添加到DataFrame中,这是因为我们先使用from_tuples函数将索引转换成元组列表,然后使用reindex函数来重新生成DataFrame的索引。

通过这个方法,我们可以向DataFrame中添加新的索引并保留原始的索引结构。

总结

在Pandas中,使用reindex函数可以补充任何缺失的值并指定索引,因此,即使我们在DataFrame上追加了新的索引,我们也可以使用reindex函数来重新生成索引。