[英]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.