在pandas中堆叠列表数组/s在pandas中堆叠等效帧堆栈

在pandas中堆叠列表数组/s在pandas中堆叠等效帧堆栈,pandas,sframe,Pandas,Sframe,熊猫数据帧中是否有SFrame堆栈?Pandas自己的堆栈仅适用于级别,而我希望在与其他包含列表的列相同的级别上扩展单个列 InputDataFrame:在实际的Dataframe中还有一些类似于user的列 +-------+------------------+ | user | friends | +-------+------------------+ | 1 | [2, 3, 4] | | 2 | [5, 6] |

熊猫数据帧中是否有SFrame堆栈?Pandas自己的堆栈仅适用于级别,而我希望在与其他包含列表的列相同的级别上扩展单个列

InputDataFrame:在实际的Dataframe中还有一些类似于user的列

+-------+------------------+
| user  |     friends      |
+-------+------------------+
|  1    |     [2, 3, 4]    |
|  2    |      [5, 6]      |
|  3    | [4, 5, 10, None] |
+----- -+------------------+
输出数据帧:在实际数据帧中还有一些类似于user的列,它们应该以类似的方式重复

+------+--------+
| user | friend |
+------+--------+
|  1   |  2     |
|  1   |  3     |
|  1   |  4     |
|  2   |  5     |
|  2   |  6     |
|  3   |  4     |
|  3   |  5     |
|  3   |  10    |
|  3   |  None  |
+------+--------+
你可以这样做

data['friend'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('friend').join(data[['user']], how='left')
如果您有多个类似于“用户”列的列,比如说“其他列”,那么也可以这样做

data['friend'].apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('friend').join(data[['user',"other column"]], how='left')

如果您可以显示您的输入以及预期的输出。我们可以帮忙。到目前为止,还不清楚你想要什么。你可能想给出一个实用的例子,说明你的熊猫架以及你想用它做什么(也许你已经试过了)。不是每个人都知道SFrame堆栈是什么。是的。刚刚意识到。举一个输入df和输出df的例子。如果这个答案对你有效,你能接受吗?谢谢!这很好用。我的df中有几个列。我是否应该使用“for循环”来创建这些项,然后传递数据帧构造函数?谢谢!这项工作非常灵活。然而,它带走了我需要保留的“无”值。否则,我更希望这是正确的答案,因为这很容易扩展到多个列,并且还使用pandas'stack'函数。
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