【问题标题】:How to replace only NaN values in a column, with a specific function?如何使用特定函数仅替换列中的 NaN 值?
【发布时间】:2021-02-03 21:52:47
【问题描述】:

我有一个如下所示的数据框:

article_id          title
NaN                 title_1
NaN                 title_2
NaN                 title_3
'202102011404103'   title_4
'202102011404104'   title_5
NaN                 title_6

我想将此代码应用于 article_id 列中的 NaN 值:

from datetime import datetime
date = datetime.strftime(datetime.now(), "%Y%m%d%H%M")
df['article_id'] = [int(date + str("0"*(3-len(str(i)))) + str(i)) + 1 for i, k in df.reset_index().iterrows()]

我想从 1 月 1 日开始,而不是 `datetime.now()。例如,我想为变量 date = '202101011348' 设置一个值

在最终结果中,我希望 article_id 列的第 4 行和第 5 行的长度相同,并从一个精确的日期开始 (202101011348)

我坚持这样做:

df[df['article_id'].isna()]

然后应用上面的代码。

预期输出:

article_id          title
'202101011404106'   title_1
'202101011404107'   title_2
'202101011404108'   title_3
'202102011404103'   title_4
'202102011404104'   title_5
'202101011404109'   title_6

但是如何将其直接应用于 df,仅应用于 article_id 列中的 NaN 值?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用applylambda 来实现您的目标。

    在这里,我将now() 函数应用于NaN,但它可以是您想要的任何方法。

    import pandas as pd
    import numpy as np
    from datetime import datetime
    
    df = pd.DataFrame({
        "article_id": [np.NaN, np.NaN, np.NaN, "202101011212", "202101011313"], 
        "title": ["title_1", "title_2", "title_3", "title_4", "title_5"]
    })
    
    |------------------------------------------|
    |   | article_id                 | title   |
    |---|----------------------------|---------|
    | 0 | NaN                        | title_1 |
    | 1 | NaN                        | title_2 |
    | 2 | NaN                        | title_3 |
    | 3 | 202101011212               | title_4 |
    | 4 | 202101011313               | title_5 |
    |------------------------------------------|
    
    df["article_id"] = df3["article_id"].apply(lambda x: datetime.now() if pd.isna(x) else x)
    
    |------------------------------------------|
    |   | article_id                 | title   |
    |---|----------------------------|---------|
    | 0 | 2021-02-03 13:16:29.438263 | title_1 |
    | 1 | 2021-02-03 13:16:29.438269 |title_2  |
    | 2 | 2021-02-03 13:16:29.438270 |title_3  |
    | 3 | 202101011212               |title_4  |
    | 4 | 202101011313               | title_5 |
    |------------------------------------------|
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-22
      • 2021-05-27
      • 2020-01-16
      • 1970-01-01
      • 2020-04-14
      • 2015-01-16
      • 2021-06-11
      • 1970-01-01
      相关资源
      最近更新 更多