Pandas多重索引写入csv文件

3

如果我将多级索引的数据帧输出到csv文件中,为什么我的第一个索引会重复?

我的数据帧:

In [1]: \
import numpy as np
import pandas as pd 
df = pd.DataFrame({
    'index1': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
    'index2': [1, 2, 3, 4, 1, 2, 3, 4],
    'column1': np.random.randint(2, size=8),
    'column2': np.random.randint(2, size=8),
    'column3': np.random.randint(2, size=8)
}).set_index(['index1', 'index2'])

Out[2]: \ 
print(df)
               column1  column2  column3
index1 index2                           
A      1             1        1        1
       2             0        1        1
       3             1        0        1
       4             0        0        0
B      1             0        1        0
       2             1        1        0
       3             0        0        0
       4             1        1        1

当我将数据框输出为CSV文件时,得到以下结果:

输出(CSV 文件):

                 column1   column2 column3
    index1  index2
    A         1       
    A         2
    A         3
    A         4
    B         1
    B         2
    B         3
    B         4

我想以与第一个代码片段中的数据框完全相同的格式输出csv文件。

因为如果你想要重新读取它,你需要所有的索引来保持一致。试着读取一个带有多级索引层中空白的 csv 文件。我敢打赌你会得到不良结果。 - PMende
请参考此处的线程:https://dev59.com/QmQm5IYBdhLWcg3wxBVg - Siddhant Tandon
1个回答

2

第一个索引是重复的,因为这就是数据在内部的样子,pandas只是以更易读的方式格式化它。当你调用'to_csv'时,原始数据被输出。为了达到你想要的效果,你可以重置索引,然后将该列中的重复值替换为空白。

df.reset_index(inplace=True)
df.loc[df['index1'].duplicated(), 'index1'] = ''
df.to_csv('mycsv.csv', index=False)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接