Python 根据数据帧中的两列的值组合两列

Python 根据数据帧中的两列的值组合两列,python,pandas,dataframe,Python,Pandas,Dataframe,我想根据数据帧的两列的值来组合它们。每行的值将处于以下三种状态之一: A) 要么它们都是相同的值 B) 只有一个单元格有一个值 C) 它们是不同的价值观 例如: 根据它们的相似性,我想把它列成一列。如果它们相等,那么应该是该值。如果一个为空,则它应为非NaN值。如果它们彼此不相等,那么我想升起一个标志(比如“在第N行,单元格1与单元格2不匹配”,这并不重要) 因此,使用上述示例,该列将如下所示: “!”只是一个占位符。我怎么能这样做呢 这是一个类似问题的示例,但考虑到两个单元格值是什么,我还

我想根据数据帧的两列的值来组合它们。每行的值将处于以下三种状态之一:

A) 要么它们都是相同的值

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

C) 它们是不同的价值观

例如:

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

因此,使用上述示例,该列将如下所示:

“!”只是一个占位符。我怎么能这样做呢

这是一个类似问题的示例,但考虑到两个单元格值是什么,我还需要函数的附加步骤。


抱歉使用Excel屏幕截图,不知道如何在此处正确创建表

除非您的数据帧非常大,并且对其应用函数需要很长时间,否则我认为最好的方法就是为此编写一个函数


def get_时间(行):
出发=行[“出发”]
到达=行['arrival']
如果pd.isnull(出发)和pd.notnull(到达):
返程
如果pd.isnull(到达)和pd.notnull(离开):
返程
如果出发=到达:
返程
返回“您的错误”
df['Time']=df.apply(获取时间,轴=1)
您可以在Pandas中使用该方法

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