将pandas中的2列合并为一列,其中包含python中的数据

时间:2013-12-05 17:35:06

标签: python dataframe

我不确定怎么说这个,但我试图结合两列说来自datafram df:

x1  x2
NaN  3
2    2
4    2
NaN  5
8    NaN

所以我想得到

的结果
X
3
2
4
5
8

我尝试使用pd.merge,但这不起作用。你能指导我在这种情况下需要哪些功能吗?

1 个答案:

答案 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