Как прочитать требуемые значения из списка и сохранить его в CSV, используя python? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть ответ в формате списка. Я должен прочитать список и сохранить только необходимые значения в файле CSV в ';' разделенные значения.

 row = "[('Employee', 'Shift', 'IT', '5:15AM', 'Server', 'Manager', 'empemail@cmp.com'),('Employee', 'Shift', 'IT', '6:15AM', 'Server', 'Manager', 'empemail@cmp.com'),('Employee', 'Shift', 'CALL CENTER', '7:15AM', 'Server', 'Manager', 'empemail@cmp.com'),('Employee', 'Shift', 'CALL CENTER', '8:15AM', 'Server', 'Manager', 'empemail@cmp.com')]"

Теперь мне нужно сохранить список в CSV-файле в следующем формате ожидаемый .

param_Name,Param_Value
p_Name,Employee
p_operationType,IT;IT;CALL CENTER;CALL CENTER
p_Time,5:15 AM;6:15 AM;7:15 AM;8:15 AM
p_avaiablity,Daily
p_email,empemail@cmp.com

Я пытаюсь в pandas .

 import csv
 import pandas as pd
 df = pd.DataFrame(data=row).T
 df.to_csv('csvfile.csv',sep=';',index=False,header=False)
 print(df)
 for item in df:
    print(item) 
    #Stuck on how to proceed further...

С этим кодом я получаю CSV-файл как

param_Name,Param_Value
p_name,Employee;Employee;Employee;Employee
p_avaiablity,Daily;Daily;Daily;Daily

Как я могу перебрать список и получить только необходимые значения и сохранить в ожидаемом формате?

Ответы [ 2 ]

2 голосов
/ 27 марта 2020

Надеюсь, это поможет

import pandas as pd

row = [('Employee', 'Shift', 'IT', '5:15AM', 'Server', 'Manager', 'empemail@cmp.com'),('Employee', 'Shift', 'IT', '6:15AM', 'Server', 'Manager', 'empemail@cmp.com'),('Employee', 'Shift', 'CALL CENTER', '7:15AM', 'Server', 'Manager', 'empemail@cmp.com'),('Employee', 'Shift', 'CALL CENTER', '8:15AM', 'Server', 'Manager', 'empemail@cmp.com')]

# use dataframe constructor properly and name your columns
cols = ['Employee', 'Dont_know_what_this_is', 'department', 'time', 'location', 'status', 'email']
df = pd.DataFrame.from_records(row, columns=cols)

for index, row in df.iterrows():
    # do what you want with your data
    print(row)

# or use 'loc' function to get specific columns
df = df.loc[df.department == 'IT']
print(df)
# then export your csv
df.to_csv('csvfile.csv',sep=';',index=False,header=False)

Выходы:

    Employee Dont_know_what_this_is   department    time location   status             email
0  Employee                  Shift           IT  5:15AM   Server  Manager  empemail@cmp.com
1  Employee                  Shift           IT  6:15AM   Server  Manager  empemail@cmp.com
2  Employee                  Shift  CALL CENTER  7:15AM   Server  Manager  empemail@cmp.com
3  Employee                  Shift  CALL CENTER  8:15AM   Server  Manager  empemail@cmp.com

После lo c:

Employee Dont_know_what_this_is department    time location   status             email
0  Employee                  Shift         IT  5:15AM   Server  Manager  empemail@cmp.com
1  Employee                  Shift         IT  6:15AM   Server  Manager  empemail@cmp.com
1 голос
/ 27 марта 2020

Это выход, который вы ищете? pd.DataFrame (data = row) даст вам это. Тогда вы можете переименовать столбцы

0   1   2   3   4   5   6
0   Employee    Shift   IT  5:15AM  Server  Manager empemail@cmp.com
1   Employee    Shift   IT  6:15AM  Server  Manager empemail@cmp.com
2   Employee    Shift   CALL CENTER 7:15AM  Server  Manager empemail@cmp.com
3   Employee    Shift   CALL CENTER 8:15AM  Server  Manager empemail@cmp.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...