pandas:用列中的最后一个非 NaN 值替换 NaN [重复]

Posted

技术标签:

【中文标题】pandas:用列中的最后一个非 NaN 值替换 NaN [重复]【英文标题】:pandas: replace NaN with the last non-NaN value in column [duplicate] 【发布时间】:2017-08-25 02:54:07 【问题描述】:

我有一个 Excel 文件,其中列出了篮球队和每支球队的球员。新团队的第一行在第 0 列中说明了团队名称,在第 1 列中说明了该团队的一名球员。下一行在第 1 列中仅包含该球队的一名球员(第 0 列中没有任何内容,因为该球队从最后一列中暗示)指定团队)。每个团队都重复此操作。

Warriors    Stephen Curry
-           Klay Thompson
-           Kevin Durant
Clippers    Chris Paul
-           Blake Griffen
-           JJ Redick
Raptors     Kyle Lowry
-           Demar Derozan

我正在将数据导入 pandas 数据框并计算每支球队的球员人数。

import pandas as pd
df = read_excel('data.xlsx')
print(df)

     Team        Player
0    Warriors    Stephen Curry
1    NaN         Klay Thompson
2    NaN         Kevin Durant
3    Clippers    Chris Paul
4    NaN         Blake Griffen
5    NaN         JJ Redick
6    Raptors     Kyle Lowry
7    NaN         Demar Derozan

无论如何我可以用适当的团队名称替换NaN(我知道我只需要填写 excel 文件中的空白点,但如果我在导入或通过 pandas 处理它看起来更干净)。我想我需要遍历数据框,如果不是NaN,则存储团队名称,并用当前存储的团队名称替换NaN,直到新团队出现。

如果你不懂篮球,我的数据框应该是这样的:

     Team        Player
0    Warriors    Stephen Curry
1    Warriors    Klay Thompson
2    Warriors    Kevin Durant
3    Clippers    Chris Paul
4    Clippers    Blake Griffen
5    Clippers    JJ Redick
6    Raptors     Kyle Lowry
7    Raptors     Demar Derozan

【问题讨论】:

请注意——正如链接的 dup 中提到的一些答案——这些天你可以直接使用.ffill() 【参考方案1】:

您可以在数据帧上使用fillna() 方法来执行此操作。 method='ffill' 告诉它用最后一个有效值填充。

df.fillna(method='ffill')

【讨论】:

以上是关于pandas:用列中的最后一个非 NaN 值替换 NaN [重复]的主要内容,如果未能解决你的问题,请参考以下文章

用列python中的新整数替换所有非整数

Python - SkLearn Imputer 用法

Pandas - 用特定组的平均值替换列中的 NaN

用列中的其他值填充空白/空值

Pandas:用前一个和下一个非缺失值的平均值动态替换 NaN 值

如果 NaN 用另一列替换,Pandas 将组中的最后一项替换