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