pandas: 在列中用最后一个非空值替换NaN

9 浏览
0 Comments

pandas: 在列中用最后一个非空值替换NaN

我有一个Excel文件,列出了篮球队和每个队的球员。新队伍的第一行在第0列中列出了队名,在第1列中列出了属于该队的球员。接下来的行中,只在第1列中列出了属于该队的球员(第0列为空,因为上一个队名已经确定)。这个模式在每个队伍中都重复出现。\n我正在将这些数据导入到一个pandas数据框中,并计算每个队伍的球员数量。\n有没有办法将NaN替换为正确的队名(我知道我只需要在Excel文件中填充空白处,但如果我在导入时或通过pandas处理,看起来更干净)。我想我需要遍历数据框,如果它不是NaN,则将队名存储起来,并将NaN替换为当前存储的队名,直到出现一个新的队伍。\n如果你不了解篮球,当所有工作完成后,我的数据框应该是这样的:\n 队名 球员\n0 Warriors Stephen Curry\n1 Warriors Klay Thompson\n2 Warriors Kevin Durant\n3 Clippers Chris Paul\n4 Clippers Blake Griffen\n5 Clippers JJ Redick\n6 Raptors Kyle Lowry\n7 Raptors Demar Derozan

0
0 Comments

问题出现的原因是DataFrame中存在缺失值NaN,需要将缺失值替换为该列中的最后一个非NaN值。

解决方法是使用pandas库中的fillna()方法,在DataFrame上调用该方法,参数method='ffill'表示使用前向填充的方式,即用该列中的最后一个有效值填充缺失值。

具体代码如下所示:

import pandas as pd
# 创建DataFrame示例
df = pd.DataFrame({'A': [1, 2, None, None, 5],
                   'B': [None, 4, 5, None, None],
                   'C': [None, None, 7, 8, 9]})
# 使用fillna()方法将缺失值替换为最后一个非NaN值
df = df.fillna(method='ffill')

以上代码将DataFrame中的缺失值NaN替换为每列最后一个非NaN值。

参考资料:

- [pandas.DataFrame.fillna](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html)

0