首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果另一列中有值,如何在dataframe中更新列值,并在存在NAN时保持原始值

如果另一列中有值,如何在dataframe中更新列值,并在存在NAN时保持原始值
EN

Stack Overflow用户
提问于 2022-09-21 23:25:49
回答 3查看 42关注 0票数 1

我有这样的数据:

代码语言:javascript
复制
Id    date          sales  sales_new
291   2022-03-01     10       15 
292   2022-04-01     12       16
293   2022-05-01      9        0 
294   2022-06-01     13       20
295   2022-07-01     10       nan
296   2022-08-01     12       nan

如果这些值存在,我想替换它们。

成果愿望:

代码语言:javascript
复制
Id    date          sales  
291   2022-03-01     15       
292   2022-04-01     16      
293   2022-05-01      0       
294   2022-06-01     20      
295   2022-07-01     10       
296   2022-08-01     12
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-09-21 23:48:55

您可以使用update这样做:

代码语言:javascript
复制
df['sales'].update(df['sales_new'])
df.drop(columns='sales_new')

结果

代码语言:javascript
复制
    Id        date  sales
0  291  2022-03-01     15
1  292  2022-04-01     16
2  293  2022-05-01      0
3  294  2022-06-01     20
4  295  2022-07-01     10
5  296  2022-08-01     12
票数 1
EN

Stack Overflow用户

发布于 2022-09-21 23:39:10

你可以用这个:

代码语言:javascript
复制
import numpy as np
import pandas as pd


data = [[291, "2022-03-01", 10, 15],
        [292, "2022-04-01", 12, 16],
        [293, "2022-05-01", 9,  0],
        [294, "2022-06-01", 13, 20],
        [295, "2022-07-01", 10, np.nan],
        [296, "2022-08-01", 12, np.nan]]

df = pd.DataFrame(data, columns=["Id", "date", "sales", "sales_new"])

df["sales"] = df.apply(lambda row: row["sales_new"] if not pd.isna(row["sales_new"]) else row["sales"], axis=1)
票数 0
EN

Stack Overflow用户

发布于 2022-09-21 23:50:12

代码语言:javascript
复制
df["sales"] = df["sales_new"].fillna(df["sales"])
del df["sales_new"]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73807871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档