你能扩展Pandas中的假人列表吗?

2024-06-16 09:49:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据集(2行2列,标题为Char0和Char1):

dataset = [['A', 'B'], ['B', 'C']]
columns = ['Char0', 'Char1']
df = pd.DataFrame(dataset, columns=columns)

我想对Char0和Char1列进行热编码,因此:

df = pd.concat([df, pd.get_dummies(df["Char0"], prefix='Char0')], axis=1)
df = pd.concat([df, pd.get_dummies(df["Char1"], prefix='Char1')], axis=1)
df.drop(['Char0', "Char1"], axis=1, inplace=True)

这将导致一个数据帧,其列标题为Char0_a、Char0_B、Char1_B、Char1_C

现在,我想对每一列都有A、B、C和D的指示(尽管数据集中目前没有“D”)。在本例中,这意味着8列:Char0_A、Char0_B、Char0_C、Char0_D、Char1_A、Char1_B、Char1_C、Char1_D

有人能帮我吗


Tags: columns数据标题dataframe编码dfgetprefix
1条回答
网友
1楼 · 发布于 2024-06-16 09:49:50

对所有列使用^{},然后对^{}创建的所有可能的列组合添加^{}

dataset = [['A', 'B'], ['B', 'C']]
columns = ['Char0', 'Char1']
df = pd.DataFrame(dataset, columns=columns)

vals = ['A','B','C','D']

from  itertools import product
cols = ['_'.join(x) for x in product(df.columns, vals)]
print (cols)
['Char0_A', 'Char0_B', 'Char0_C', 'Char0_D', 'Char1_A', 'Char1_B', 'Char1_C', 'Char1_D']

df1 = pd.get_dummies(df).reindex(cols, axis=1, fill_value=0)

print (df1)
   Char0_A  Char0_B  Char0_C  Char0_D  Char1_A  Char1_B  Char1_C  Char1_D
0        1        0        0        0        0        1        0        0
1        0        1        0        0        0        0        1        0

相关问题 更多 >