我不确定怎么说这个,但我试图结合两列说来自datafram df:
x1 x2
NaN 3
2 2
4 2
NaN 5
8 NaN
所以我想得到
的结果X
3
2
4
5
8
我尝试使用pd.merge,但这不起作用。你能指导我在这种情况下需要哪些功能吗?
答案 0 :(得分:2)
从您的问题中不清楚您是否希望x1
支配x2
(我的第一次猜测)或者您是否想要两列的最大值(@ RobStarling的猜测)。我们也可以做到。要查看差异,我们会稍微更改您的框架:
>>> df = pd.DataFrame({'x1': {0: np.nan, 1: 2.0, 2: 4.0, 3: 1, 4: 8.0}, 'x2': {0: 3.0, 1: 2.0, 2: 2.0, 3: 5.0, 4: np.nan}})
>>> df
x1 x2
0 NaN 3
1 2 2
2 4 2
3 1 5
4 8 NaN
[5 rows x 2 columns]
如果您希望x1
获胜,我们可以使用where
- 我们希望x1
使用{null},而x2
则为<{1}}:
>>> df["x1"].where(~pd.isnull(df["x1"]), df["x2"])
0 3
1 2
2 4
3 1
4 8
Name: x1, dtype: float64
如果您想要最大值:
>>> df[["x1", "x2"]].max(axis=1)
0 3
1 2
2 4
3 5
4 8
dtype: float64