[英]Selected columns unique values convert to dataframe columns
我有一個main_df
dataframe 如下。
user_id main_code sub_1 sub_2
0 03920 AA YA ZA
1 34233 BB YB ZA
2 02342 AA YD ZB
3 32324 CC YA ZA
4 52323 AA YA ZD
5 20932 DD YD ZD
6 02034 BB YA ZA
我正在嘗試實現低於 output dataframe。 main_df dataframe 唯一值的選定列(sub_1 和 sub_2)計數並轉換為 dataframe 列。
main_code YA YB YD ZA ZB ZD
0 AA 2.0 NaN 1.0 1.0 1.0 1.0
1 BB 1.0 1.0 NaN 2.0 NaN NaN
2 CC 1.0 NaN NaN 1.0 NaN NaN
3 DD NaN NaN 1.0 NaN NaN 1.0
到目前為止,我嘗試如下。 我得到一個不同的 output。
result_df = pd.DataFrame()
for col in ['sub_1','sub_2']:
result_df = pd.concat([result_df, pd.DataFrame(main_df[pd.notnull(main_df[col])]['main_code'].value_counts())], axis=1)
result_df.columns = ['sub_1','sub_2']
有人可以指導我會很有幫助。 謝謝你。
將.melt
與.pivot_table
一起使用
df = df.melt(id_vars='main_code', value_vars=['sub_1', 'sub_2']).pivot_table(index='main_code', columns='value', aggfunc='count').reset_index()
這里是 go:
pd.merge(
df.pivot_table(index="main_code", columns="sub_1", aggfunc="count")["sub_2"],
df.pivot_table(index="main_code", columns="sub_2", aggfunc="count")["sub_1"],
left_index=True,
right_index=True
)
雖然已經給出了正確的答案。 如果您想遵循定制的方法,您可以使用它。
a = (pd.pivot_table(df, index='main_code',columns=
['sub_1'],aggfunc=np.count_nonzero).reset_index())
cols = a.columns.droplevel(0).to_list()
cols[0]='main_code'
a.columns=cols
print(a)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.