考虑以下数据集:
运行代码后:
convert_dummy1 = convert_dummy.pivot(index='Product_Code', columns='Month', values='Sales').reset_index()
数据格式正确,但是我的索引列名为“月”,我似乎根本无法删除它。我已经尝试过以下代码,但是它什么也没做。
del convert_dummy1.index.name
我可以将数据集保存到csv,删除ID列,然后读取csv-但必须有一种更有效的方法。
reset_index()之后的数据集:
答案 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)