Python 保留索引顺序

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)

我希望顺序为
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()

我猜您看到的错误顺序是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()
您可以使用它进行绘图。你可以用它更好地控制顺序,你可以用它来绘图。你可以用它更好地控制秩序