【问题标题】:Create a pandas dataframe column depending if a value is null or not根据值是否为空来创建熊猫数据框列
【发布时间】:2020-09-09 12:42:49
【问题描述】:

我有一个关于学生在 2016 年参加的课程的数据科学相关项目。我有一个专栏显示学生升级课程的日期。如果课程尚未升级,则值为 Null。我想要的是创建一个新的数据框,该数据框仅包含这个由“是”或“否”组成的升级列。 我尝试了以下代码并且它有效,除了我收到以下警告: “SettingWithCopyWarning:试图在 DataFrame 的切片副本上设置一个值。” 我正在放置一个示例数据集、代码和我得到的输出。 如果有人能告诉我一个更有效的解释方式,那就太好了。

import pandas as pd

registration = pd.DataFrame({'upgraded':['2016-08-12 19:42:07+00:00', '2016-08-14 11:51:21+00:00',
    '2016-07-22 17:24:59+00:00', None, None, '2016-07-12 10:33:02+00:00']})

upgraded_1 = registration[['upgraded']]
for i in range(len(upgraded_1['upgraded'])):
    if pd.isnull(upgraded_1['upgraded'][i]):
        upgraded_1['upgraded'][i] = "No"
    else:
        upgraded_1['upgraded'][i] = "Yes"

输出:

 upgraded_1
    0   Yes
    1   Yes
    2   Yes
    3   No
    4   No
    5   Yes

【问题讨论】:

  • 我已经编辑了我的问题,希望它能更好地服务于这个社区的指导方针。

标签: python pandas data-science


【解决方案1】:

您可以使用isna 方法和numpy.where(将其视为numpy.if_then_else)来实现此目的。

>>> pd.DataFrame(np.where(registration.isna(), 'No', 'Yes'))
     0
0  Yes
1  Yes
2  Yes
3   No
4   No
5  Yes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2020-12-27
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多