反转索引名称

时间:2017-04-27 16:31:54

标签: python pandas numpy

我有以下df

                  b
      GRE*BLU   0.000383
      RED*CLE   0.000330
      BRO*BLA   0.000426

如何将其转为:

                    b
      BLU*GRE   0.000383
      CLE*RED   0.000330
      BLA*BRO   0.000426

我只想颠倒索引的顺序(而不是RED*CLECLE*RED等等。有可能这样做吗?

我道歉,前面的例子不正确,想法是反转字符串而不是字符

2 个答案:

答案 0 :(得分:2)

您可以从原始索引中的反转元素列表中创建新索引。

df.index = pd.Index([row[::-1] for row in df.index])
            b
B*A  0.000383
C*A  0.000330
C*B  0.000426

您也可以使用矢量化NumPy函数(当行数变大时速度会快得多):

rev = np.vectorize(lambda x: x[::-1])
df.index = rev(df.index)

<强>更新

根据您更新的问题:

rev = np.vectorize(lambda x: '*'.join(x.split('*')[::-1]))
                b
BLU*GRE  0.000383
CLE*RED  0.000330
BLA*BRO  0.000426

答案 1 :(得分:1)

可以使用扩展切片语法反转Python字符串:

mystring[::-1]

选择数据框的索引&amp;应用上述内容,分配回数据帧的索引:

df.index = df.index.map(lambda x: x[::-1])

注意:编辑以下原始帖子编辑:

拆分*字符上的索引字符串,反转列表&amp;加入回来:

df.index = df.index.map(lambda x: '*'.join(x.split('*')[::-1]))