Python CSV Сгруппированные столбцы в список элементов смешанных элементов - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю над одним jython-сценарием для websphere, который бы принял sys.argv как list of dict для выполнения дальнейшего процесса-

Мне нужна помощь в преобразовании данных CSV в список словаря, смешанного со списком кортежей какниже-

Ввод CSV-

cluster_name,pool_name,min,max,inactive_time,description,action
Clst1,WebContainer,25,25,60000,Revisit,modify
Clst3,WebContainer,50,50,60000,revisit,modify
Clst6,WebContainer,50,50,60000,revisit,modify
Clst1,ORB.thread.pool,,,,,delete
Clst3,ORB.thread.pool,,,,,delete`

Я пытаюсь использовать панды для группировки столбцов, но не могу создать смешанный элемент dict

Нужен объект ниже (список адресов)смешанных элементов)

[
 {cluster_name:'Clst1',
  pool_name:[
         (WebContainer,25,25,60000,Revisit,modify),
         (ORB.thread.pool,,,,,delete)]},
 {cluster_name:'Clst3',
  pool_name:[
         (WebContainer,50,50,60000,revisit,modify), 
         (ORB.thread.pool,,,,,delete)]},
 {cluster_name:'Clst6',
  pool_name:[
         (WebContainer,50,50,60000,revisit,modify)
        ]}
]

Так что я могу использовать этот объект как сценарий sys.argv для jython.

1 Ответ

0 голосов
/ 06 февраля 2019

Попробуйте:

from io import StringIO
import pandas as pd

csvfile = StringIO("""cluster_name,pool_name,min,max,inactive_time,description,action
Clst1,WebContainer,25,25,60000,Revisit,modify
Clst3,WebContainer,50,50,60000,revisit,modify
Clst6,WebContainer,50,50,60000,revisit,modify
Clst1,ORB.thread.pool,,,,,delete
Clst3,ORB.thread.pool,,,,,delete""")

df = pd.read_csv(csvfile)

s = df.set_index(['cluster_name']).apply(tuple, axis=1).rename('pool_name').groupby(level=0).agg(list).reset_index()

s.to_json(orient='records')

Вывод:

[{"cluster_name":"Clst1","pool_name":[["WebContainer",25.0,25.0,60000.0,"Revisit","modify"],["ORB.thread.pool",null,null,null,null,"delete"]]},{"cluster_name":"Clst3","pool_name":[["WebContainer",50.0,50.0,60000.0,"revisit","modify"],["ORB.thread.pool",null,null,null,null,"delete"]]},{"cluster_name":"Clst6","pool_name":[["WebContainer",50.0,50.0,60000.0,"revisit","modify"]]}]
...