我正在尝试通过从现有列中计算值来在熊猫数据框中创建新列。
我有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
如何正确构造此条件语句?
答案 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,不需要其他修改。