簡體   English   中英

根據它們的值組合熊貓數據框中的兩列

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM