繁体   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