【问题标题】:Pandas multi-index to csv filePandas 多索引到 csv 文件
【发布时间】:2019-07-29 18:08:17
【问题描述】:

如果我将多索引数据帧输出到 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

我想以与第一个代码 sn-p 中的数据帧完全相同的格式输出 csv 文件。

【问题讨论】:

  • 因为如果你想读回它,你需要所有的索引来一致地这样做。尝试在多索引级别读取带有空格的 csv。我打赌你会得到不希望的结果。

标签: python pandas


【解决方案1】:

第一个索引是重复的,因为这就是数据在底层的样子,pandas 只是将其格式化以使其更易于阅读。当您调用“to_csv”时,会输出原始数据。要执行您想要的操作,您可以重置索引,然后将该列中的重复值替换为空白。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 2020-11-12
    • 2018-02-12
    • 2018-12-21
    • 2017-05-01
    • 2021-08-25
    • 2014-07-31
    • 2016-11-12
    相关资源
    最近更新 更多