熊猫添加缺失值

时间:2021-05-11 23:40:04

标签: python pandas dataframe

我是 Pandas 的新手,正在寻找一种在数据框中添加缺失值的方法。 知道如何从输入到输出吗?谢谢

Input 

      Module  Status  Domain
0        1    N      www.cat.com
1        2    N      www.cat.com
2        5    Y      www.cat.com
3        7    Y      www.cat.com
4        8    Y      www.cat.com
5        9    N      www.cat.com

Expected 

      Module  Status  Domain
0        1    N      www.cat.com
1        2    N      www.cat.com
2        5    Y      www.cat.com
3        7    Y      www.cat.com
4        8    Y      www.cat.com
5        9    N      www.cat.com
6        3    N      www.cat.com
7        4    N      www.cat.com
8        6    N      www.cat.com

4 个答案:

答案 0 :(得分:2)

重新索引选项:

df = df.set_index('Module') \
    .reindex(np.arange(df["Module"].min(), df["Module"].max() + 1)) \
    .fillna(pd.Series(['N', 'www.cat.com'], index=['Status', 'Domain'])) \
    .reset_index()
print(df)
   Module Status       Domain
0       1      N  www.cat.com
1       2      N  www.cat.com
2       3      N  www.cat.com
3       4      N  www.cat.com
4       5      Y  www.cat.com
5       6      N  www.cat.com
6       7      Y  www.cat.com
7       8      Y  www.cat.com
8       9      N  www.cat.com

答案 1 :(得分:1)

试试:

mn, mx = df["Module"].min(), df["Module"].max()
missing = list(set(df["Module"]).symmetric_difference(range(mn, mx + 1)))

df = (
    pd.concat(
        [df, pd.DataFrame({"Module": missing, "Status": "N", "Domain": np.nan})]
    )
    .ffill()
    .reset_index(drop=True)
)
print(df)

打印:

   Module Status       Domain
0       1      N  www.cat.com
1       2      N  www.cat.com
2       5      Y  www.cat.com
3       7      Y  www.cat.com
4       8      Y  www.cat.com
5       9      N  www.cat.com
6       3      N  www.cat.com
7       4      N  www.cat.com
8       6      N  www.cat.com

答案 2 :(得分:0)

您可以创建一个 Module 列列表,并使用循环匹配与预期列表存在,并在 no 不匹配时创建另一个数据框。然后合并两个数据框

答案 3 :(得分:0)

你可以试试这个:

status = set(range(1,10)) - set(df['Module'])
df.append(pd.DataFrame([df[df['Status']=='N'].iloc[0]]*len(status)).assign(Module=status)).reset_index(drop=True)

结果:

#    Module Status       Domain
# 0       1      N  www.cat.com
# 1       2      N  www.cat.com
# 2       5      Y  www.cat.com
# 3       7      Y  www.cat.com
# 4       8      Y  www.cat.com
# 5       9      N  www.cat.com
# 6       3      N  www.cat.com
# 7       4      N  www.cat.com
# 8       6      N  www.cat.com