OHE는 다루지 않습니다. + stack
+ get_dummies
+ sum
str.split
를 사용
옵션 1
.
df = pd.DataFrame(data)
print(df)
mesh
0 A, B, C
1 C,B
2
df = df.mesh.str.split('\s*,\s*', expand=True)\
.stack().str.get_dummies().sum(level=0)
print(df)
A B C
0 1 1 1
1 0 1 1
2 0 0 0
옵션 2
apply
+ value_counts
. Bharath Shetty에게서 배운 작은 트릭. reset_index
하였다 astype
를 사용
df = df.mesh.str.split('\s*,\s*', expand=True)\
.apply(pd.Series.value_counts, 1).iloc[:, 1:].fillna(0)
print(df)
A B C
0 1.0 1.0 1.0
1 0.0 1.0 1.0
2 0.0 0.0 0.0
또한 하찮은 일에 속 태우고, :
df = df.astype(int).reset_index()
print(df)
index A B C
0 0 1 1 1
1 1 0 1 1
2 2 0 0 0
옵션 3
pd.crosstab
x = df.mesh.str.split('\s*,\s*', expand=True).stack()
df = pd.crosstab(x.index.get_level_values(0), x.values).iloc[:, 1:]
print(df)
col_0 A B C
row_0
0 1 1 1
1 0 1 1
2 0 0 0
''\ ''라인 continuati 인물과 그 들여 쓰기 - 내 눈! –
정말 멋진 옵션을 게시하는 데 너무 빠릅니다. 이제 이건'pi-esque'입니다. – Dark
@JonClements Lol dude ... 그들은'\'없이 더 악 해 보입니다 : p –