pandas数据帧中是否存在等效的SFrame堆栈?熊猫'自己的堆栈只适用于级别,而我正在寻找扩展与包含列表的其他列相同级别的单个列。
输入数据框:在实际数据框中还有一些像user这样的列
+-------+------------------+
| user | friends |
+-------+------------------+
| 1 | [2, 3, 4] |
| 2 | [5, 6] |
| 3 | [4, 5, 10, None] |
+----- -+------------------+
输出数据帧:在实际数据帧中还有一些像用户这样的列应该以类似的方式重复
+------+--------+
| user | friend |
+------+--------+
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 5 |
| 2 | 6 |
| 3 | 4 |
| 3 | 5 |
| 3 | 10 |
| 3 | None |
+------+--------+
答案 0 :(得分:1)
你可以这样做
data['friend'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('friend').join(data[['user']], how='left')
如果您有多个类似于" user"的列,这也会有效。专栏说"其他专栏",然后你会做
data['friend'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('friend').join(data[['user',"other column"]], how='left')
答案 1 :(得分:1)
pd.DataFrame.from_items([
('user', df.user.values.repeat(df.friends.str.len())),
('friends', np.concatenate(df.friends))
])
user friends
0 1 2
1 1 3
2 1 4
3 2 5
4 2 6
5 3 4
6 3 5
7 3 10
8 3 None