Pandas数据框如何删除和重命名列

问题描述 投票:0回答:3

对于以下数据帧,我正在尝试1)删除列B,因为它不在Marker,2的行值中,然后将列A,C,D重命名为新名称ColA,ColB,ColC根据New_Name列下的值。有什么方法可以做到这一点?我是否需要将New_Name列放入列表中并遍历Dataframe列名称呢?非常感谢您的帮助。

          A     B     C      D        Marker   New_Name
         1.0   0.0   0.0    1.0        A          ColA
         1.0   0.0   0.0    0.0        C          ColC
         0.0   0.0   0.0    0.0        D          ColD
python pandas dataframe slice rename
3个回答
1
投票

IIUC

s=df.reindex(columns=df.Marker).\
    rename(columns=dict(zip(df.Marker,df.New_Name))).\
     rename_axis(None,axis=1)
s
   ColA  ColC  ColD
0   1.0   0.0   1.0
1   1.0   0.0   0.0
2   0.0   0.0   0.0

0
投票

因此可以将标记名称保留为行名称;

df2=df.drop(columns=['Marker','B']).set_index('New_Name').T.rename_axis('Marker',axis=1)
df2

0
投票

使用映射和df.rename()重命名列:

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df.rename(columns={"A": "a", "B": "c"})

print(df):

   a    c
0  1  4
1  2  5
2  3  6
© www.soinside.com 2019 - 2024. All rights reserved.