Python 保留索引顺序
我想绘制一个图表,但熊猫一直在重新排序我的索引(N) 我希望顺序为Python 保留索引顺序,python,pandas,Python,Pandas,我想绘制一个图表,但熊猫一直在重新排序我的索引(N) 我希望顺序为N=50100200,其中每个N有三列,即2x2 3x3 4x4 f1 = pd.DataFrame({"User": ["2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4","2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4","2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4"],\ "clm2": profit_comparis
N=50100200
,其中每个N
有三列,即2x2 3x3 4x4
f1 = pd.DataFrame({"User": ["2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4","2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4","2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4"],\
"clm2": profit_comparison[0:len(profit_comparison)],\
"N": ["N=50","N=50","N=50","N=100","N=100","N=100","N=200","N=200","N=200"]})
with PdfPages('profit(n,p).pdf') as pdf:
ax1= df1.pivot(index = "N", columns = "User", values = "clm2").plot.bar(edgecolor = "white")
ax1.set_ylabel("Profit")
pdf.savefig()
plt.close()
我猜你看到的错误顺序是100,200,50。如果是这样的话,那么熊猫正在按字母顺序对索引进行排序 在这种情况下,您有两种选择:第一种是根据索引的数字信息对索引进行排序,您可以检查如何进行排序 第二种方法是将数据更改为在50之前插入一个零或空格,使其符合要求:
profit_comparison = range (9)
f1 = pd.DataFrame (
{
"User": [
"2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4",
"2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4",
"2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4"
],
"clm2": profit_comparison[:],
"N": [
"N= 50","N= 50","N= 50",
"N=100","N=100","N=100",
"N=200","N=200","N=200"
]
},
)
ax1 = f1.pivot(
index = "N",
columns = "User",
values = "clm2"
).plot.bar(edgecolor = "white")
ax1.set_ylabel("Profit")
一些补充说明:
- 在括号内时,不需要反斜杠在下一行中继续
- 如果要复制利润比较,不需要使用
;您可以只使用利润比较[:][:len(利润比较)]
- 如果索引仍然未排序,则可以在打印前对由
生成的数据帧使用pivot
sort\u index()
profit_comparison = range (9)
f1 = pd.DataFrame (
{
"User": [
"2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4",
"2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4",
"2 x 2 x 2","3 x 3 x 3", "4 x 4 x 4"
],
"clm2": profit_comparison[:],
"N": [
"N= 50","N= 50","N= 50",
"N=100","N=100","N=100",
"N=200","N=200","N=200"
]
},
)
ax1 = f1.pivot(
index = "N",
columns = "User",
values = "clm2"
).plot.bar(edgecolor = "white")
ax1.set_ylabel("Profit")
一些补充说明:
- 在括号内时,不需要反斜杠在下一行中继续
- 如果要复制利润比较,不需要使用
;您可以只使用利润比较[:][:len(利润比较)]
- 如果索引仍然未排序,则可以在打印前对由
生成的数据帧使用pivot
sort\u index()