在熊猫问题发生之后重新索引

时间:2019-01-24 16:19:05

标签: python pandas pivot-table

考虑以下数据集:

dataset

运行代码后:

convert_dummy1 = convert_dummy.pivot(index='Product_Code', columns='Month', values='Sales').reset_index()

数据格式正确,但是我的索引列名为“月”,我似乎根本无法删除它。我已经尝试过以下代码,但是它什么也没做。

del convert_dummy1.index.name

我可以将数据集保存到csv,删除ID列,然后读取csv-但必须有一种更有效的方法。

reset_index()之后的数据集:

enter image description here

2 个答案:

答案 0 :(得分:1)

convert_dummy1

Month   Product_Code      0   1   2   3   4
    0        10133.9      0   0   0   0   0
    1        10146.9    120  80  60   0 100

convert_dummy1.index = pd.RangeIndex(len(convert_dummy1.index))
del convert_dummy1.columns.name
convert_dummy1

    Product_Code      0   1   2   3   4
0        10133.9      0   0   0   0   0
1        10146.9    120  80  60   0 100

答案 1 :(得分:0)

由于您使用columns="Month"进行旋转,因此输出中的每一列都对应一个月。如果您决定在数据透视之后重设索引,则应使用convert_dummy1.columns.value检查列名,该列名应根据情况返回:

array(['Product_Code', 1, 2, 3, 4, 5], dtype=object)

convert_dummy1.columns.names应当返回:

FrozenList(['Month'])

因此,要重命名Month,请使用rename_axis函数:

convert_dummy1.rename_axis('index',axis=1)

输出:

index   Product_Code    1   2   3   4   5
0       10133           NaN NaN NaN NaN 0.0
1       10234           NaN 0.0 NaN NaN NaN
2       10245           0.0 NaN NaN NaN NaN
3       10345           NaN NaN NaN 0.0 NaN
4       10987           NaN NaN 1.0 NaN NaN

如果您想复制它,这是我的代码:

df1=pd.DataFrame({'Product_Code':[10133,10245,10234,10987,10345], 'Month': [1,2,3,4,5], 'Sales': [0,0,0,1,0]})
df2=df1.pivot_table(index='Product_Code', columns='Month', values='Sales').reset_index().rename_axis('index',axis=1)