[英]Combining two columns in a pandas dataframe depending on their value
我想根据它们的值组合数据框的两列。 每行的值将处于以下三种状态之一:
A)要么它们都是相同的值,
B) 只有一个单元格有值
C)它们是不同的值
例如:
我想根据它们的相似性将其合并为一列。 如果它们相等,那么它应该只是那个值。 如果一个是空白,那么它应该是非 NaN 值。 如果它们彼此不相等,那么我想举一个标志(例如“在第 N 行,单元格 1 与单元格 2 不匹配”,它是什么并不重要)。
这 ”!” 只是一个占位符。 我怎么可能去做这件事。
这是一个类似问题的示例,但考虑到两个单元格值是什么,我还需要添加该函数的步骤。 在 pandas/python 的数据框中合并两列文本
抱歉使用 Excel 屏幕截图,不确定如何在此处正确创建表格。
您可以在 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
除非您的数据框非常大并且对其应用函数需要很长时间,否则我认为最好的方法是为此编写一个函数。
def get_time(row):
departure = row['Departure']
arrival = row['Arrival']
if pd.isnull(departure) and pd.notnull(arrival):
return arrival
if pd.isnull(arrival) and pd.notnull(departure):
return departure
if departure == arrival:
return departure
return "Your Error"
df['Time'] = df.apply(get_time, axis=1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.