Pandas数据框架:分组列具有相同的首字母

3

我有一个类似以下的数据框

                            LIT__0001   LIT__002    AAA__0001   AAA__0002   XYZ
2019-10-31 13:40:00-04:00   NaN         0.014786    10          55          1
2019-10-31 13:45:00-04:00   NaN         0.012143    33          11          2
2019-10-31 13:50:00-04:00   NaN         NaN         NaN         NaN         3
2019-10-31 13:55:00-04:00   NaN         0.020000    14          13          4
2019-10-31 14:00:00-04:00   0.010000    NaN         14          NaN         5

我需要将它转换为以下格式的数据框:
                            LIT         AAA         XYZ
2019-10-31 13:40:00-04:00   0.014786    10          1
2019-10-31 13:45:00-04:00   0.012143    11          2
2019-10-31 13:50:00-04:00   NaN         NaN         3
2019-10-31 13:55:00-04:00   0.020000    13          4
2019-10-31 14:00:00-04:00   0.010000    14          5

即对于每一列在'__'之前拥有相同的首字母,取每行中的最小值。 我的数据框非常庞大,因此我希望能得到更快的解决方案。
1个回答

3

使用 GroupBy.min 方法按列进行分组,通过指定参数 axis=1 和 lambda 函数进行拆分:

df = df.groupby(lambda x: x.split('__')[0], axis=1, sort=False).min()

或者使用 str.split:

df = df.groupby(df.columns.str.split('__').str[0], axis=1, sort=False).min()
print (df)
                                LIT   AAA  XYZ
2019-10-31 13:40:00-04:00  0.014786  10.0  1.0
2019-10-31 13:45:00-04:00  0.012143  11.0  2.0
2019-10-31 13:50:00-04:00       NaN   NaN  3.0
2019-10-31 13:55:00-04:00  0.020000  13.0  4.0
2019-10-31 14:00:00-04:00  0.010000  14.0  5.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接