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
我在 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