不是针对Python 3和Pandas的NaN条件语句

时间:2019-07-15 17:00:35

标签: python python-3.x pandas

我正在尝试通过从现有列中计算值来在熊猫数据框中创建新列。

我有3个现有的列(“发布日期”,“ item_published_at”,“ item_created_at”)

但是,我的“如果row [column_name]不是None:”语句允许使用NaN值的列,而不会跳到下一条语句。

在下面的代码中,我不希望在第一个条件之后打印“ nan”的值,我希望类似“ 2018-08-17”的内容

df['adjusted_date'] = df.apply(lambda row: adjusted_date(row), axis=1)



def adjusted_launch(row): 
    if row['launched_date']is not None:
        print(row['launched_date'])
        exit()
        adjusted_date = date_to_time_in_timezone(row['launched_date']) 

    elif row['item_published_at'] is not None:
        adjusted_date = row['item_published_at']#make datetime in PST
    else:
        adjusted_date = row['item_created_at'] #make datetime in PST
    return adjusted_date

如何正确构造此条件语句?

2 个答案:

答案 0 :(得分:2)

首先将“ nan”填充为数据为空的字符串

df.fillna("nan",inplace=True)

然后在以下情况下可以应用函数:

def adjusted_launch(row): 
    if row['launched_date'] !='nan':
......

第二溶胶

import numpy as np
df.fillna(np.nan,inplace=True)

#suggested by  @ShadowRanger
def funct(row):
    if row['col'].notnull():
        pass

答案 1 :(得分:1)

df = df.where((pd.notnull(df)), None)

这将用None替换所有nan,不需要其他修改。