Python 根据左侧的列重命名列

Python 根据左侧的列重命名列,python,pandas,Python,Pandas,考虑一个数据帧,df: Metric_a Status.1 Metric_b Status.2, Metric_c, Status.3 10 kg 11 mg 15 ml 12 kg 21 mg 25 ml 130 kg 41 mg 35 ml 我是从一个使用多个Status列的csv中读到这篇文章的。熊猫

考虑一个数据帧,
df

Metric_a Status.1 Metric_b Status.2, Metric_c, Status.3
10       kg       11       mg        15        ml
12       kg       21       mg        25        ml
130      kg       41       mg        35        ml
我是从一个使用多个
Status
列的
csv
中读到这篇文章的。熊猫自然会把这些索引起来

我希望使用每个
状态
列左侧的列重命名
状态
列。通过检查,我相信秩序得到维持,左边的一栏总是合适的

期望输出:

Metric_a Status_Metric_a Metric_b Status_Metric_b Metric_c, Status_Metric_c
    10       kg       11       mg        15        ml
    12       kg       21       mg        25        ml
    130      kg       41       mg        35        ml
您可以使用and(它仅适用于
系列
,因此需要转换
索引
):

另一个解决方案包括和:


您可以使用提供的
重命名
方法。
例如:

df.rename(columns={'Status.1': 'Status_Metric_a'}, inplace=True)
a = df.columns.to_series()
df.columns = np.where(a.str.contains('Status'), 'Status_' + a.shift(), a)
print (df)
   Metric_a Status_Metric_a  Metric_b Status_Metric_b  Metric_c  \
0        10              kg        11              mg        15   
1        12              kg        21              mg        25   
2       130              kg        41              mg        35   

  Status_Metric_c  
0              ml  
1              ml  
2              ml  
df.rename(columns={'Status.1': 'Status_Metric_a'}, inplace=True)