【问题标题】:How to read required values from a list and store it in csv using python?如何使用 python 从列表中读取所需的值并将其存储在 csv 中?
【发布时间】:2020-07-08 05:26:47
【问题描述】:

我有一个列表格式的回复。我必须阅读列表并仅将所需值存储在 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

我正在尝试使用熊猫。

 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

如何迭代列表并仅获取所需的值并按预期​​格式存储?

【问题讨论】:

  • pd.DataFrame(data=row) 这给了我0 1 2 3 4 5 6 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

标签: python pandas list csv


【解决方案1】:

希望对你有帮助

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

定位后:

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】:

    这是您正在寻找的输出吗? 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
    

    【讨论】:

      猜你喜欢
      • 2018-02-01
      • 2015-07-19
      • 2020-02-15
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2021-05-28
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多