Python - 将 CSV 导入为 DataFrame,使用 groupby 进行过滤并将结果导出为格式化文本

Python - Import CSV as DataFrame, filter with groupby and export results as formatted text

我在 python 脚本后面苦苦挣扎,以将格式化的 CSV(“,”作为分隔符)导入为 DataFrame,按特定列中的值对结果进行分组,并根据我需要输出的组网络设备的格式化 CLI 配置脚本。

如果有人能帮助我,我会很高兴

我的 CSV (users.csv) 是这样的

user,email,group
pippo1,pippo1@corporate.com,grp1
pippo2,pippo2@corporate.com,grp1
pippo10,pippo10@corporate.com,grp2
user10,user10@corporate.com,grp3
user93,user93@corporate.com,grp1

现在我可以使用

按“组”列导入和分组数据

    df = pd.read_csv('users.csv', sep=',')
    grouped = df.groupby('group')

我无法做的是生成这样的文本输出

Intro
edit grp1
append member pippo1 pippo2 user93
next
edit grp2
append member pippo10
next
edit grp3
append member user10
next
end

通过下面的“for”我得到了这个结果,不幸的是这不是我想要实现的

    for group in grouped:
    print (group)
    grp = group[0]
    usergrp_text += "edit " + grp
    usertoappend = group[1]
    print (usertoappend['user'].to_string(index=False))

组变量打印

('grp1',      user                        email group  0  pippo1       pippo1@corporate.com  grp1  1  pippo2   pippoilbello@corporate.com grp1 4  user93  uservalgopoco@corporate.com  grp1)

组[1]变量的打印

pippo1 pippo2 user93

在现实中执行 for group in grouped 时,您会得到一个包含组名、组内容的元组。

使用 edit 的组名,并通过理解“sub-dataframe”的 user 字段来扩展用户。不是最高效的,但可以完成工作

grouped = df.groupby('group')
print("Intro")
for k,g in grouped:
    print(f"edit {k}")
    print(f"append member {' '.join([x for x in g.user])}")
    print("next")
print("end")

打印:

Intro
edit grp1
append member pippo1 pippo2
next
edit grp2
append member pippo10
next
edit grp3
append member user10
next
end