我想分组(合并?)使用公共列local_authority_name
的3个数据集,并考虑所有其他列和值(NaN、string、percentage、integer等):
数据集的某些行的示例:
1df_total_per_dif
-->
local_authority_name dif_per_2013-2016
0 Barking and Dagenham 61.0%
1 Barnet -8.4%
2 Barnsley -42.8%
3 Bath and North East Somerset -45.1%
4 Bexley 6.7%
5 Birmingham -14.0%
2election2016
-->
local_authority_name pre2016 post2016
0 Adur CON CON
1 Amber Valley CON CON
2 Barnet NOC NOC
3 Basingstoke and Deane CON CON
4 Brentwood CON CON
3 IMD2015
-->
IMD_decile
local_authority_name
Barking and Dagenham 2.600000
Barnet 5.914692
Barnsley 3.931973
Barrow-in-Furness 4.040816
Basildon 5.209091
Basingstoke and Deane 7.678899
Bassetlaw 5.042857
Bath and North East Somerset 7.400000
我想得到如下结果:
local_authority_name dif_per_2013-2016 pre2016 post2016 IMD_decile
(...)
5 Barking and Dagenham 61.0% NaN NaN 2.600000
6 Barnet -8.4% NOC NOC 5.914692
7 Barnsley -42.8% NaN NaN NaN
8 Barrow-in-Furness NaN NaN NaN 4.040816
9 Basingstoke and Deane NaN CON CON 7.678899
(...)
我试过:
df_list = [df_total_per_dif, election2016, IMD2015]
df_concat = pd.concat(df_list)
df_final = df_concat.groupby('local_authority_name')['dif_per_2013-2016',' pre2016', 'post2016', 'IMD_decile'].apply(lambda x: ','.join(x)).reset_index()
但我不知道如何更改函数lambda
以获得所需的内容。你知道吗
将
local_authority_name
设置为每个数据帧的索引,然后调用pd.concat
:例如
收益率
或者
同样有效。注意,但是结果有一点不同,第一个方法返回索引中带有
local_authority_name
的数据帧,而第二个方法返回带有local_authority_name
列的数据帧。只要在第一个结果上调用reset_index
,就可以将local_authority_name
移动到一列中。你知道吗对于小数据帧,例如您的示例,第一个方法(
using_concat
)更快。 对于较大的数据帧,迭代合并可能更快。例如,对于以下100000行数据帧:using_merge
比using_concat
快约70%:对您来说,更快的方法可能取决于许多其他因素。如果 性能很重要,一定要在自己的机器上用 你自己的数据。你知道吗
相关问题 更多 >
编程相关推荐