删除字符索引数据帧

时间:2017-05-01 11:33:08

标签: python pandas

我有以下df:

total:

                                    A       B           C         D
2   Quarter Endingds9ñs           31   25476.20   26321.00   24867.00
3   Quarter Ending dsa)d           31   26627.20   27904.00   25983.00
4      Year EndingdjAsd           34  106806.00  110738.00  103731.00
5      Year Ending (kañs           33  123813.00  131232.00  119091.00

如何删除最后5个字符以获取:

total:
                             A       B           C         D
2   Quarter Ending           31   25476.20   26321.00   24867.00
3   Quarter Ending           31   26627.20   27904.00   25983.00
4      Year Ending           34  106806.00  110738.00  103731.00
5      Year Ending           33  123813.00  131232.00  119091.00

我真的不知道如何清理删除最后5个字符的索引。

3 个答案:

答案 0 :(得分:2)

使用lambda函数删除最后5个符号,如:

total.index = total.index.map(lambda x: str(x)[:-5])

答案 1 :(得分:2)

如果你想清理5个字符的所有行,你可以使用它(可能是更好的功能)

def remove_last_chars(x):
    return (x.replace(x[-5:], ''))

在此功能之后使用

df[df.columns[0:1]] = df[df.columns[0:1]].applymap(remove_last_chars)

答案 2 :(得分:1)

来源多指数DF

In [210]: df
Out[210]:
                         A         B         C         D
2 Quarter Endingds9ñs   31   25476.2   26321.0   24867.0
3 Quarter Ending dsa)d  31   26627.2   27904.0   25983.0
4 Year EndingdjAsd      34  106806.0  110738.0  103731.0
5 Year Ending (kañs     33  123813.0  131232.0  119091.0

解决方案:

In [211]: df.index.set_levels(df.index.get_level_values(1).str[:-5], level=1, inplace=True)

In [212]: df
Out[212]:
                    A         B         C         D
2 Quarter Ending   31   25476.2   26321.0   24867.0
3 Quarter Ending   31   26627.2   27904.0   25983.0
4 Year Ending      34  106806.0  110738.0  103731.0
5 Year Ending      33  123813.0  131232.0  119091.0