LEFT
| RIGHT
| FULL
)(INNER
| OUTER
)连接?merge
?join
?concat
?update
?谁?什么?为什么?!... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.
这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).
请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.
这是一个自我回答的QnA,旨在指导用户应用的缺陷和好处.
我已经看到很多关于Stack Overflow问题的答案涉及使用apply.我也看到用户评论他们说" apply
很慢",应该避免".
我已经阅读了很多关于性能主题的文章,解释apply
很慢.我还在文档中看到了一个关于如何apply
简单地传递UDF的便利函数的免责声明(现在似乎无法找到).因此,普遍的共识是,apply
如果可能,应该避免.但是,这引发了以下问题:
apply
是如此糟糕,那为什么它在API中呢?apply
- 免费?apply
是不错的(比其他可能的解决方案更好)?我有一个如下所示的数据框
id value index
5eb3cbcc434474213e58b49a [1,2,3,4,6] [0,1,2,3,4]
5eb3f335434474213e58b49d [1,2,3,4] [0,2,3,4]
5eb3f853434474213e58b49f [1,2,3,4] [0,2,3,4]
5eb40395434474213e58b4a2 [1,2,3,4] [0,1,2,3]
5eb40425434474213e58b4a5 [1,2] [0,2]
Run Code Online (Sandbox Code Playgroud)
我尝试在以下内容中转换此数据框,因为索引旨在作为每个单独值的标题,看起来像这样:
id 0 1 2 3 4
5eb3cbcc434474213e58b49a 1 2 3 4 6
5eb3f335434474213e58b49d 1 Nan 2 3 4
5eb3f853434474213e58b49f 1 Nan 2 3 4
5eb40395434474213e58b4a2 1 2 3 4 Nan
5eb40425434474213e58b4a5 1 Nan 2 Nan Nan
Run Code Online (Sandbox Code Playgroud)
我尝试首先拆分列表列表:
new_df = pd.DataFrame(df.Value.str.split(',').tolist(), index=df.Index).stack()
new_df = new_df.reset_index([0, 'Index'])
new_df.columns = ['Value', 'Index']
Run Code Online (Sandbox Code Playgroud)
但是我收到错误
类型错误:不可散列的类型:“列表”
是什么导致了这个错误?