根据熊猫数据框的值组合两列

时间:2019-12-23 14:22:16

标签: python pandas dataframe

我想根据数据框的值合并两列。每行的值将处于以下三种状态之一:

A)它们都是相同的值,

B)只有一个单元格具有值

C)它们是不同的值

例如:

enter image description here

我想根据它们的相似性将其归为一列。如果它们相等,则应为该值。如果一个为空白,则应为非NaN值。如果它们彼此不相等,那么我想举一个标志(比如“在第N行,单元格1与单元格2不匹配”,这并不重要)。

因此,使用上面的示例,该列将如下所示: enter image description here

“!”只是一个占位符。我该怎么做。

这是一个类似问题的示例,但是考虑到两个单元格的值是什么,我还需要函数的添加步骤。 Combine two columns of text in dataframe in pandas/python

使用Excel屏幕截图的道歉,不确定在此处如何正确创建表格。

2 个答案:

答案 0 :(得分:1)

您可以在熊猫中使用combine方法

import pandas as pd
import numpy as np

df = pd.DataFrame({"departure":[327,427,429,np.nan], "arrival":[np.nan,427,431,457]})
selection_rule = lambda s1, s2: s1 if s1 == s2 else (s1 if np.isnan(s2) else (s2 if np.isnan(s1) else "!"))

df['time'] = df['departure'].combine(df['arrival'], selection_rule )


>>> df
   departure  arrival   time
0      327.0      NaN    327
1      427.0    427.0    427
2      429.0    431.0      !
3        NaN    457.0    457

答案 1 :(得分:0)

除非您的数据帧非常大,并且将函数应用于该函数将花费很长时间,否则我会说最好的方法就是为此编写一个函数。

Head to View in the application menu, and click on "Show Postman Console" or use the keyboard shortcut (CMD/CTRL + ALT + C) to open.