我有以下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*CLE
,CLE*RED
等等。有可能这样做吗?
我道歉,前面的例子不正确,想法是反转字符串而不是字符
答案 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]))