gpt4 book ai didi

python - 通过具有 NaN 值的数据帧更新数据帧

转载 作者:行者123 更新时间:2023-12-04 15:50:25 26 4
gpt4 key购买 nike

我尝试更新 DataFrame

df1 = pd.DataFrame(data = {'A' : [1,2,3,4], 'B' : [5,6,7,8]})

由另一个数据帧
df2 = pd.DataFrame(data = {'B' : [9, np.nan, 11, np.nan]}).

现在,我的目标是更新 df1来自 df2并使用覆盖所有值( NaN 值)
df1.update(df2)

与常见用法相比,获得 NaN 对我来说很重要。值最终在 df1 .
但据我所知,更新返回
>>> df1
A B
0 1 9
1 2 6
2 3 11
3 4 8

有没有办法得到
>>> df1
A B
0 1 9
1 2 NaN
2 3 11
3 4 NaN

无建筑 df1手动?

最佳答案

我迟到了,但我最近遇到了同样的问题,即尝试更新数据帧而不忽略像 Pandas 内置的 NaN 值 update方法。
对于共享相同列名的两个数据框,一种解决方法是连接两个数据框,然后删除重复项,只保留最后一个条目:

import pandas as pd
import numpy as np

df1 = pd.DataFrame(data = {'A' : [1,2,3,4], 'B' : [5,6,7,8]})
df2 = pd.DataFrame(data = {'A' : [1,2,3,4], 'B' : [9, np.nan, 11, np.nan]})

frames = [df1, df2]
df_concatenated = pd.concat(frames)
df1=df_concatenated.loc[~df_concatenated.index.duplicated(keep='last')]

根据索引,可能需要对输出数据帧的索引进行排序:
df1=df1.sort_index()

为您解决非常具体的例子,其中 df2没有 A 列,您可以运行:
import pandas as pd
import numpy as np

df1 = pd.DataFrame(data = {'A' : [1,2,3,4], 'B' : [5,6,7,8]})
df2 = pd.DataFrame(data = {'B' : [9, np.nan, 11, np.nan]})

frames = [df1, df2]
df_concatenated = pd.concat(frames)

df1['B']=df_concatenated.loc[~df_concatenated.index.duplicated(keep='last')]['B']

关于python - 通过具有 NaN 值的数据帧更新数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52728506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com