python-3.x - Pandas 将多列合并/合并为 1
问题描述
我想在 pandas 中将 2 列合并为 1,当我在谷歌上搜索时,我得到的唯一选项是:合并、连接、加入。这些都不能解决我在这里遇到的问题。
目标:
来自 base_dataframe:
Name Mark_x Mark_y Mark_z
A 90 nan nan
B nan 85 nan
C nan nan 70
D 30 nan nan
到desired_dataframe:
Name Mark
A 90
B 85
C 70
D 30
我所拥有的是上面的数据框,并且只有 1 个 Mark 列永远不会为空(先决条件)。现在在谷歌搜索上停留了 1 个小时,不知道我应该研究什么功能来帮助解决这个问题。如果您知道任何可能与此问题相关的功能,请告诉我,以便我研究它,谢谢。
解决方案
假设在这三列中每行始终只有一个值,如您的示例所示,您可以使用df.sum()
,默认情况下跳过任何NaN
值:
desired_dataframe = pd.DataFrame(base_dataframe['Name'])
desired_dataframe['Mark'] = base_dataframe.iloc[:, 1:4].sum(axis=1)
在每行可能有更多值的情况下,使用 eg 可能会更安全df.max()
,它以相同的方式工作。
推荐阅读
- serialization - Ember.js - Accessing nested data via serializer
- laravel - 在 Laravel 中将 Braintree 从 Class 转换为实例接口,代码去哪了?
- c# - ApplicationView.GetForCurrentView().TryResizeView() 是不可预测的。在我的 UWP 应用中并不总是有效
- python - How to use frozen_inference_graph.pb file of tensorflow (GPU) at some other PC?
- x86-64 - How is CR8 register used to prioritize interrupts in an x86-64 CPU?
- python - Python3-我应该如何创建一个可以禁用嵌套函数的函数?
- jpa - 我该如何忽略:PSQLException:在此 ResultSet 中找不到列名 ClothStyle
- r - 创建离散色轴
- java - 在 Viewmodel 中访问 BroadCastReceiver
- javascript - 单击加号按钮后,如何重复获得相同的 div?