pandas 匿名列名

ccgok5k5  于 2023-01-07  发布在  其他
关注(0)|答案(3)|浏览(126)

我有一个这样的 Dataframe

IsCool IsTall IsHappy Target
0      1      0       1
1      1      0       0
0      1      0       0
1      0      1       1

我想匿名化除target之外的列名。我该怎么做?
预期产出:

col1   col2   col3    Target
0      1      0       1
1      1      0       0
0      1      0       0
1      0      1       1
    • 源 Dataframe :**
import pandas as pd

df = pd.DataFrame({"IsCool": [0, 1, 0, 1], 
                   "IsTall": [1, 1, 1, 0], 
                   "IsHappy": [0, 0, 0, 1], 
                   "Target": [1, 0, 0, 1]})
goucqfw6

goucqfw61#

关于:

cols = {
    col: f"col{i + 1}" if col != "Target" else col
    for i, col in enumerate(df.columns)
}

out = df.rename(columns=cols)
col1  col2  col3  Target
0     0     1     0       1
1     1     1     0       0
2     0     1     0       0
3     1     0     1       1

您也可以在适当的位置执行此操作:

cols = [
    f"col{i + 1}" if col != "Target" else col
    for i, col in enumerate(df.columns)
]

df.columns = cols
3gtaxfhh

3gtaxfhh2#

您可以用途:

# get all columns except excluded ones (here "Target")
cols = df.columns.difference(['Target'])
# give a new name 
names = 'col' + pd.Series(range(1, len(cols)+1), index=cols).astype(str)

out = df.rename(columns=names)

输出:

col1  col2  col3  Target
0     0     1     0       1
1     1     1     0       0
2     0     1     0       0
3     1     0     1       1
2hh7jdfx

2hh7jdfx3#

    • 拟议代码:**

您可以将一个dict传递给rename() Pandas函数,并在参数中包含如下的dict:
columns={'IsCool': 'col0', 'IsTall': 'col1', 'IsHappy': 'col2'}
此dict通过使用zip函数获得:dict(zip(keys, values))

import pandas as pd

df = pd.DataFrame({"IsCool": [0, 1, 0, 1], 
                   "IsTall": [1, 1, 1, 0], 
                   "IsHappy": [0, 0, 0, 1], 
                   "Target": [1, 0, 0, 1]})

df = df.rename(columns = dict(zip(df.columns.drop('Target'), 
                                  ["col%s"%i for i in range(len(df.columns)-1)])))

print(df)
    • 结果:**
col0  col1  col2  Target
0     0     1     0       1
1     1     1     0       0
2     0     1     0       0
3     1     0     1       1

相关问题