我有这个熊猫数据框
user join_date session
A 2018-09-20 2019-10-20
B 2018-01-01 2019-10-20
B 2018-01-01 2019-10-21
...
我想把它变成这个
user join_date 2019-10-20 2019-10-21 ... n
A 2018-09-20 1 0 ... 0
B 2018-01-01 1 1 ... 0
...
用户将按用户分组,我已经对会话进行了排序
您可以使用
a = pd.crosstab(df.user, df.session).reset_index().rename_axis(None, axis=1)
df.merge(a , on='user').drop('session', axis=1).drop_duplicates()
输出
user join_date 2019-10-20 2019-10-21
0 A 2018-09-20 1 0
1 B 2018-01-01 1 1
你想用的是函数 pd.get_dummies((,如下所示:
df = pd.DataFrame({"user": ['A', 'B', 'C'], 'session': ['2019-10-20', '2019-10-20', '2018-10-21']})
pd.get_dummies(df, columns=['session'])
生成输出
Out[137]:
user session_2018-10-21 session_2019-10-20
0 A 0 1
1 B 0 1
2 C 1 0