按顺序填写表格中缺失的数字

4
我需要用pandas修改CSV文件。 我有以下表格:
Interface   Description
1           Used
2           Used
3           Used
4           Used
6           Used
8           Used
12          Used
17          Used

我需要将“接口”列与1到20的范围匹配,填充缺失数字并在“描述”列中放置单词“free”,并按照以下顺序排序:

Interface   Description
1           Used
2           Used
3           Used
4           Used
5           free
6           Used
7           free
8           Used
9           free
10          free
11          free
12          Used
13          free
14          free
15          free
16          free
17          Used
18          free
19          free
20          free

1
你有什么问题吗?如果你需要帮助,你已经尝试了什么,你需要什么样的帮助?例如,你知道如何制作一个范围并使用.mask()/.where()吗?请编辑以澄清。更多提示,请参见[ask]。 - wjandrea
反悔了,.mask()/.where() 在这里并不是很有帮助。我可能把.fillna() 和它们混淆了。 - wjandrea
1
感谢您的建设性批评,我会尽力更清晰地表达。我尝试使用for循环,并在其中使用if语句来迭代1到20的范围,但是出现了许多错误,我认为对此进行评论并不会有太大帮助。 - Martin Barbieri
3个回答

4

结合fillna使用merge

df = pd.DataFrame({
    'Interface': [1, 2, 3, 4, 6, 8, 12, 17],
    'Description': 'Used'})
df2 = pd.DataFrame({'Interface': range(1, 21)}).merge(df, how="left").fillna("free")

1
太棒了!成功了!这比我之前尝试的要简单得多,我会研究这个解决方案,如果有任何问题我会问你的,谢谢! - Martin Barbieri

3

另一种方法使用reindex

df.set_index('Interface').reindex(range(1,21)).fillna('free').reset_index()



    Interface Description
0           1        Used
1           2        Used
2           3        Used
3           4        Used
4           5        free
5           6        Used
6           7        free
7           8        Used
8           9        free
9          10        free
10         11        free
11         12        Used
12         13        free
13         14        free
14         15        free
15         16        free
16         17        Used
17         18        free
18         19        free
19         20        free

非常感谢!完全符合我的需求! - Martin Barbieri

1

一种方法是使用来自 pyjanitorcomplete,以公开缺失的行:

# pip install pyjanitor
import pandas as pd
import janitor
interface = {'Interface' : range(1, 21)}
df.complete(interface, fill_value='free')
    Interface Description
0           1        Used
1           2        Used
2           3        Used
3           4        Used
4           5        free
5           6        Used
6           7        free
7           8        Used
8           9        free
9          10        free
10         11        free
11         12        Used
12         13        free
13         14        free
14         15        free
15         16        free
16         17        Used
17         18        free
18         19        free
19         20        free

非常感谢!满足了我的需求! - Martin Barbieri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接