对于以下数据框,我正在尝试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
答案 0 :(得分:2)
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
答案 1 :(得分:2)
使用映射和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
答案 2 :(得分:1)
因此可以将标记名称保留为行名称;
df2=df.drop(columns=['Marker','B']).set_index('New_Name').T.rename_axis('Marker',axis=1)
df2