所有人!
我有一个问题,多数据帧合并,组合。
请检查下面的csv。
我想要所有的组合(用户-内容)
换句话说,用户拥有所有contentInformation
请帮帮我,谢谢!
UserID Age
U-1 10
U-2 20
U-3 30
ContentID ContentName Genre
C-1 T-1 Action
C-2 T-2 Game
C-3 T-3 SNS
C-4 T-4 Music我想看看下面。
UserID ContentID Age ContentName Genre
U-1 C-1 10 T-1 Action
U-1 C-2 10 T-2 Game
U-1 C-3 10 T-3 SNS
U-1 C-4 10 T-4 Music
U-2 C-1 20 T-1 Action
U-2 C-2 20 T-2 Game
U-2 C-3 20 T-3 SNS
U-2 C-4 20 T-4 Music
U-3 C-1 30 T-1 Action
U-3 C-2 30 T-2 Game
U-3 C-3 30 T-3 SNS
U-3 C-4 30 T-4 Music发布于 2017-10-24 09:12:00
执行交叉连接的一个巧妙技巧是在虚拟列上执行merge。
df1.assign(foo=1).merge(df2.assign(foo=1)).drop('foo', 1)
UserID Age ContentID ContentName Genre
0 U-1 10 C-1 T-1 Action
1 U-1 10 C-2 T-2 Game
2 U-1 10 C-3 T-3 SNS
3 U-1 10 C-4 T-4 Music
4 U-2 20 C-1 T-1 Action
5 U-2 20 C-2 T-2 Game
6 U-2 20 C-3 T-3 SNS
7 U-2 20 C-4 T-4 Music
8 U-3 30 C-1 T-1 Action
9 U-3 30 C-2 T-2 Game
10 U-3 30 C-3 T-3 SNS
11 U-3 30 C-4 T-4 Music如果你想设置一个MultiIndex,你可以用MultIndex.from_product创建一个,然后对交叉连接的结果调用set_index:
idx = pd.MultiIndex.from_product((df1.index, df2.index))
df = df1.assign(foo=1).merge(df2.assign(foo=1)).drop('foo', 1)
df.set_index(idx).rename_axis(['User', 'Game'], 0)
UserID Age ContentID ContentName Genre
User Game
0 0 U-1 10 C-1 T-1 Action
1 U-1 10 C-2 T-2 Game
2 U-1 10 C-3 T-3 SNS
3 U-1 10 C-4 T-4 Music
1 0 U-2 20 C-1 T-1 Action
1 U-2 20 C-2 T-2 Game
2 U-2 20 C-3 T-3 SNS
3 U-2 20 C-4 T-4 Music
2 0 U-3 30 C-1 T-1 Action
1 U-3 30 C-2 T-2 Game
2 U-3 30 C-3 T-3 SNS
3 U-3 30 C-4 T-4 Music发布于 2017-10-24 09:38:43
有点想过头了,哈哈。
df2['v']=[df1.values.tolist()]*len(df2)
df=df2.set_index(['ContentID','ContentName','Genre']).v.apply(pd.Series).stack().reset_index().drop('level_3',1)
df[df1.columns]=df[0].apply(pd.Series)
df.sort_values('UserID').drop(0,1)
Out[421]:
ContentID ContentName Genre UserID Age
0 C-1 T-1 Action U-1 10
3 C-2 T-2 Game U-1 10
6 C-3 T-3 SNS U-1 10
9 C-4 T-4 Music U-1 10
1 C-1 T-1 Action U-2 20
4 C-2 T-2 Game U-2 20
7 C-3 T-3 SNS U-2 20
10 C-4 T-4 Music U-2 20
2 C-1 T-1 Action U-3 30
5 C-2 T-2 Game U-3 30
8 C-3 T-3 SNS U-3 30
11 C-4 T-4 Music U-3 30https://stackoverflow.com/questions/46900645
复制相似问题