python - Pandas 数据清理——按行聚合
问题描述
假设我有一个熊猫数据框,如下所示:
lkey value_x rkey value_y
0 foo nan foo 5
1 foo nan foo 8
2 foo 5 foo 5
3 foo 5 foo 8
4 bar nan bar 6
5 baz 13 baz 7
我想清理我的数据以获得结果数据框:
lkey rkey value
0 foo foo 5
1 foo foo 8
2 foo foo 5
3 foo foo 8
4 bar bar 6
5 baz baz 13
其中 value 现在是基于 value_x 和 value_y 的任意值列(在本例中为最大值)。我怎样才能做到这一点?
我看过 agg、groupby、apply、map 等。
解决方案
您可以在轴 1 上找到最大值。
df['value'] = df1[['value_x', 'value_y']].max(1)
或者更通用的,
df['value'] = df.filter(like = 'value').max(1)
您可以使用删除 value_x 和 value_y
df.drop(['value_x', 'value_y'], axis = 1, inplace = True)
编辑:如果值是字符串,
df[['value_x', 'value_y']].apply(lambda x: x[0] if len(x[0]) > len(x[1]) else x[1], axis = 1)
推荐阅读
- python - 如何将 pytesseract alto_xml 的结果添加到原始图像
- ruby-on-rails - 如何在 Rails 应用程序中包含插件/引擎?
- angular - ngx-paypal 不适用于生产版本
- r - libstableR 库不需要的输出
- c - Atmel USART 和 TCC 交互问题
- html - 在控制台上的 EJS 变量中打印 json 数组时出错
- c# - 实体框架优化包含多对多表关系
- sql-server - 是否可以根据输出参数循环存储过程?
- python - 在列表(地图)中编写语法的正确方法是什么?
- java - Spring Boot REST API 无法识别的令牌