在大熊猫中将onehotencoder值合并在一起

时间:2019-07-14 10:38:26

标签: python pandas dataframe data-science

我正在完成我的数据科学项目,并希望使用get_dummies pandas库合并数据

我的df:

    0_A  0_B 0_C  1_A 1_B 1_C
0   1    0   0     0  1   0
1   0    1   0     1  0   0
2   0    1   0     0  0   1 

输出:

  A    B   C  
0   1    1   0     
1   1    1   0     
2   0    1   1  

尝试使用if语句但没有运气

问候 赛夫

2 个答案:

答案 0 :(得分:0)

df = pd.DataFrame(data={"0_A":[0,1,1],
                       "0_B":[1,0,0],
                       "0_C":[0,1,1],
                       "1_A":[0,0,0],
                       "1_B":[0,1,0],
                       "1_C":[0,0,1]})
final_df = pd.DataFrame(columns=["A","B","C"])

for i in final_df:
    final_df[i] = (df[df.columns[df.columns.str.contains(i)]].max(axis=1))

print(final_df)

    A   B   C
0   1   1   0
1   1   1   0
2   0   1   1

答案 1 :(得分:0)

您可以在列之间使用按位或,如下所示:

import pandas as pd
from io import StringIO

df = pd.read_csv(StringIO("""
    0_A  0_B 0_C  1_A 1_B 1_C
0   1    0   0     0  1   0
1   0    1   0     1  0   0
2   0    1   0     0  0   1 """), sep=r"\s+")

df["A"] = df["0_A"] | df["1_A"]
df["B"] = df["0_B"] | df["1_B"]
df["C"] = df["0_C"] | df["1_C"]

df = df[["A", "B", "C"]]

print(df)

输出:

   A  B  C
0  1  1  0
1  1  1  0
2  0  1  1