簡體   English   中英

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)

group[1] 變量的打印

pippo1 pippo2 user93

在實際for group in grouped時,您會得到一個包含組名、組內容的元組。

使用組名進行edit ,並通過理解“子數據框”的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM