3 回答

TA貢獻1825條經驗 獲得超6個贊
你可以試試這個:
import pandas as pd
df1 = pd.read_csv(fileName, sep=",")
df2 = df1["hobby"].str.get_dummies("/")
df = pd.concat([df1, df2], axis = 1)
print(df)
輸出:
personID hobby baseball reading soccer
0 x1234 baseball/soccer 1 0 1
1 y1234 reading/baseball 1 1 0
2 z1234 NaN 0 0 0
3 a1234 soccer 0 0 1

TA貢獻1998條經驗 獲得超6個贊
讓我們嘗試pandas.get_dummies
標記值和groupby
索引以減少數(shù)據(jù)幀。使用列索引連接pandas.concat
創(chuàng)建。dummies
original dataframe
import pandas as pd
dummies = (
? ? pd.get_dummies(df.hoppy.str.split("/").explode())
? ? ? ? .groupby(level=0).sum()
)
print(pd.concat([df, dummies], axis = 1))
personID? ? ? ? ? ? ?hoppy? baseball? reading? soccer
0? ? x1234? ?baseball/soccer? ? ? ? ?1? ? ? ? 0? ? ? ?1
1? ? y1234? reading/baseball? ? ? ? ?1? ? ? ? 1? ? ? ?0
2? ? z1234? ? ? ? ? ? ? ?NaN? ? ? ? ?0? ? ? ? 0? ? ? ?0
3? ? a1234? ? ? ? ? ? soccer? ? ? ? ?0? ? ? ? 0? ? ? ?1

TA貢獻1858條經驗 獲得超8個贊
您可以一行完成:
df = df.assign(val=1).pivot_table(values='val', index='personID,', columns='hoppy').fillna(0)
解釋:
.assign()
添加一列,這里我們用你稍后在輸出表中看到的 1 填充它
.pivot_table()
現(xiàn)在旋轉表 essentialy 為您完成主要工作,如果找不到列的 persionID,它將具有“nan”值
.fillna()
因此用于用 0 填充此“nan”值
添加回答
舉報