我是 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
答案 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