gpt4 book ai didi

python - Pandas:DataFrame 列表的单元格填充(方法 = 'pad' )

转载 作者:行者123 更新时间:2023-12-01 08:52:31 25 4
gpt4 key购买 nike

基本上,我正在尝试做类似 this 的事情但对于 fillna 而不是求和。

我有一个 df 列表,每个 df 都有相同的列/索引,按时间顺序排列:

import numpy as np
import pandas as pd
np.random.seed(0)

df_list = []
for index in range(3):
a = pd.DataFrame(np.random.randint(3, size=(5,3)), columns=list('abc'))
mask = np.random.choice([True, False], size=a.shape)
df_list.append(a.mask(mask))

现在,我想要替换第 i 个的 numpy.nan 单元格df_list 中的 DataFrame 通过第 i-1 th 中相同单元格的值df_list 中的 DataFrame

因此,如果第一个 DataFrame 是:

     a    b    c
0 NaN 1.0 0.0
1 1.0 1.0 NaN
2 0.0 NaN 0.0
3 NaN 0.0 2.0
4 NaN 2.0 2.0

第二个是:

     a    b    c
0 0.0 NaN NaN
1 NaN NaN NaN
2 0.0 1.0 NaN
3 NaN NaN 2.0
4 0.0 NaN 2.0

那么输出 output_list 应该是一个与 df_list 长度相同的列表,并且还具有 DataFrame 作为元素。

output_list 的第一个条目与 df_list 的第一个条目相同。output_list 的第二个条目是:

     a    b    c
0 0.0 1.0 0.0
1 1.0 1.0 NaN
2 0.0 1.0 0.0
3 NaN 0.0 2.0
4 0.0 2.0 2.0

最佳答案

我相信更新功能对此非常有用,请参阅文档:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.update.html
它是一种专门允许您更新 DataFrame 的方法,在您的情况下仅更新它的 NaN 元素。

特别是,您可以像这样使用它:

new_df_list = df_list[:1]
for df_new, df_old in zip(df_list[1:], df_list[:-1]):
df_new.update(df_old, overwrite=False)
new_df_list.append(df_new)

这将为您提供所需的输出

关于python - Pandas:DataFrame 列表的单元格填充(方法 = 'pad' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53022326/

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