【发布时间】:2022-01-19 18:38:46
【问题描述】:
我有一个 dataframe 的字符串值,其中缺少值。它需要由以下条件填充/填充。
- 从
NaN值索引中,检查最后 3 行和后 3 行,并将NaN替换为 6 行中最频繁/重复的值。 - 如果最后 3 行和后 3 行中出现频率相等的 2 个字符串,请将
NaN替换为这 6 行中索引最低的值。
我的DataFrame:
reading
0 talk
1 kill
2 NaN
3 vertical
4 type
5 kill
6 NaN
7 vertical
8 vertical
9 type
10 durable
11 NaN
12 durable
13 vertical
预期输出:
reading
0 talk
1 kill
2 kill
3 vertical
4 type
5 kill
6 vertical
7 vertical
8 vertical
9 type
10 durable
11 vertical
12 durable
13 vertical
这是最小可重现代码:
import pandas as pd
import numpy as np
df = pd.DataFrame({'reading':['talk','kill',np.NAN,'vertical','type','kill',np.NAN,'vertical','vertical','type','durable',np.NAN,'durable','vertical']})
def filldf(df):
# Do the logic here
return df
我不确定如何解决这个问题。任何帮助将不胜感激!
【问题讨论】:
-
逻辑不清楚,请详解
-
基本上,NaN 应该根据 NaN 索引中的前 3 个值和后 3 个值填充,我为此添加了条件。
-
你是指 NaN 行的“最后 3 行”和“下 3 行”吗?例如,如果 NaN 出现在第 5 行,您想查看第 2 行 - 第 4 行和第 6 行 - 第 8 行的值?然后找出这 6 行中出现频率最高的值?
-
正是@Emma。你是对的。
-
“First”和“Last”仍然令人困惑。请使用“NaN 行的最后 3 行和下 3 行”进行编辑。
标签: python-3.x pandas missing-data