python - 数据框根据具有相同索引的值填充空列值(使用PANDAS)
问题描述
dataframe
我有以下index
内容tag#
。我想sound
根据匹配索引用正确的值填充列中的所有 NaN 值。
pet sound
tag#
11 cat
11 cat meow
11 cat meow
15 bird tweet
8 pig oink
5 dog
8 pig
8 pig
8 pig
5 dog woof
5 dog woof
11 cat meow
我希望数据框看起来像这样
pet sound
tag#
11 cat meow
11 cat meow
11 cat meow
15 bird tweet
8 pig oink
5 dog woof
8 pig oink
8 pig oink
8 pig oink
5 dog woof
5 dog woof
11 cat meow
解决方案
尝试groupby apply
在 0 级和ffill
+bfill
每组:
df = df.groupby(level=0).apply(lambda g: g.ffill().bfill())
pet sound
tag#
11 cat meow
11 cat meow
11 cat meow
11 cat meow
15 bird tweet
8 pig oink
8 pig oink
8 pig oink
8 pig oink
5 dog woof
5 dog woof
5 dog woof
完整的工作示例:
import pandas as pd
from numpy import nan
# Re-create DataFrame
df = pd.DataFrame({
'tag#': [11, 11, 11, 15, 8, 5, 8, 8, 8, 5, 5, 11],
'pet': ['cat', 'cat', 'cat', 'bird', 'pig', 'dog', 'pig',
'pig', 'pig', 'dog', 'dog', 'cat'],
'sound': [nan, 'meow', 'meow', 'tweet', 'oink', nan, nan,
nan, nan, 'woof', 'woof', 'meow']
}).set_index('tag#')
df = df.groupby(level=0).apply(lambda g: g.ffill().bfill())
print(df)
推荐阅读
- python - 我可以使用 win32gui 将焦点设置到特定浏览器 (firefox) 选项卡吗?
- django - Django Rest Framework JWT 用户注册/登录概念
- xamarin.forms - zxing.net:iOS 无法识别任何条码
- mysql - 在这两个 SQL 查询之间,其中一个是“正确的”吗?
- linux - Jenkins 工作完成后 Linux 屏幕消失
- python - 使用自定义项从 QGraphicsScene 接收信号
- r - 在 Moodle 中结合 mchoice 和 num 导入的完形填空题
- linux - 在 D 应用程序中链接到 Linux 下的 zlib 时如何解决此错误?
- javascript - Jquery 在 Django html 页面中不起作用
- python - KeyError:尝试从 API 返回记录计数时的记录