簡體   English   中英

如何將列出的熊貓數據集寫入excel xlsx文件?

[英]How to write a listed pandas dataset into an excel xlsx file?

我正在嘗試為列出的數據集創建一個if語句,以檢查if語句中的條件,如果通過,則應將其從行[2]和列[0]開始的數據集中的值添加到第一個已經創建並格式化的工作表中],如果未通過,則應在第二行已創建並格式化的工作表中,將值添加到同一行和列的索引處

我添加了兩個for循環來遍歷數據

import csv
import xlsxwriter
import pandas
import pandas as pd
from openpyxl import load_workbook

with open(r'directory', 'r') as csvfile:
spamreader = csv.reader(csvfile)
newlist= list(spamreader)
#print(newlist)
#newlist = [['id', 'name', 'lastContactedTime', 'email', 'phone_phones', 'home_phones', 'mobile_phones', 'work_phones', 'fax_phones', 'other_phones', 'address_1', 'address_2', 'address_3', 'city', 'state', 'postal_code', 'country', 'tags'], ['15-contacts', 'Jane Doe', '', 'j@greenbriar.com', '', '+1 6570987234', '+1 3245687907', '+1 5678743546', '', '', '54 George street', '', '', 'Ridge Springs', 'VA', '25678', 'US', ''], ['3-contacts', 'Joe Malcoun', '2019-08-28 14:29:27', 'ceo@nutshell.com', '', '', '', '', '', '', '212 South Fifth Ave', '', '', 'Ann Arbor', 'MI', '48103', 'US', ''], ['7-contacts', 'Morgan Ramirez', '', 'mramirez@nerdy.com', '', '', '+1 6780431874', '+1 3338765438', '+1 5679876987', '', '567 one st', '', '', 'Birmingham', 'AL', '45678', 'US', ''], ['11-contacts', 'Roman Burki', '', 'burki@bvb.com', '', '', '+1 0983457690', '+1 5468756098', '', '', '546 fourteen street Nw', '', '', 'Dallas', 'TX', '54678', 'US', '']]




# I have created two worksheets, formatted them (code not included but worksheet works and added words to the cells

workbook= xlsxwriter.Workbook('Test1.xlsx')
worksheet= workbook.add_worksheet()

workbook2= xlsxwriter.Workbook('Test2.xlsx')
worksheet2= workbook2.add_worksheet()
df = pd.DataFrame(newlist[1:], columns=newlist[0])
addresses = df.address_1.tolist()


df[['name', 'id']] = df.name.str.split(' ', expand=True)

# rename id
df.rename(columns={'id': 'Lastname','name': 'Firstname','lastContactedTime': 'Company','email':'Work_email', 'other_phones':'Personal_City', 'address_1':'Work_Street', 'address_2':'Personal_Zip', 'address_3':'Personal_Street', 'city':'Work_City', 'state':'Work_State', 'postal_code':'Work_Zip', 'tags':'Personal_email'}, inplace=True)

df[['Work_email', 'Company']] = df.Work_email.str.split('@', expand=True)

df.Company = [x.strip('.com') for x in df.Company]


del df['phone_phones']
note =  [' ', ' ', ' ',' ']
df['Note'] = note


notecat =  [' ', ' ', ' ',' ']
df['Note_Category'] = notecat

title =  [' ', ' ', ' ',' ']
df['Title'] = title

Willingtoshare =  [' ', ' ', ' ',' ']
df['Willing_to_share'] = Willingtoshare

Willingtointroduce =  [' ', ' ', ' ',' ']
df['Willing_to_introduce'] = Willingtointroduce

Personalstate =[' ', ' ', ' ',' ']
df['Personal_State'] = Personalstate

df[['country_code', 'work_phones']] = df.work_phones.str.split(' ', expand=True)
del df['country_code']
del df['country']
del df['fax_phones']
del df['home_phones']
#print(df)

  Lastname Firstname  ... Willing_to_introduce Personal_State
0      Doe      Jane  ...                                    
1  Malcoun       Joe  ...                                    
2  Ramirez    Morgan  ...                                    
3    Burki     Roman  ...                                    

[4 rows x 20 columns]
excel_file = IO()

df = df[['Lastname', 'Firstname','Company','Title','Willing_to_share','Willing_to_introduce','work_phones','Work_email','Work_Street','Work_City','Work_State','Work_Zip','Personal_Street','Personal_City','Personal_State','Personal_Zip','mobile_phones','Personal_email','Note','Note_Category']]
data=df.values.tolist()
columns=df.columns
sf=df.columns.tolist()

book = load_workbook('Test1.xlsx')
writer= pd.ExcelWriter('Test1.xlsx',engine='xlsxwriter') 
writer.book = book


book2 = load_workbook('Test2.xlsx')
writer2= pd.ExcelWriter('Test2.xlsx',engine='xlsxwriter')
writer2.book2 = book2


workbook = writer.book
workbook2 = writer2.book2

worksheet = writer.sheets['Sheet1']
worksheet2 = writer.sheets['Sheet2']

value = data
for column in df:
   for col, sf in enumerate(data):
        if (column[0] != ' ' and column[1] != ' ') and ((column[2] != ' ' and column[3] != ' ') or (column[2] == ' ') and (column[6] != ' ') or (column[16] != ' ') and (column[12] != ' ' and column[13] != ' ' and column[14] != ' ' and column[15] != ' ') or (column[8] != ' ' and column[9] != ' ' and column[10] != ' ' and column[11] != ' ' and (column[7] != ' ' or column[17] != ' '))):
            worksheet.write('A3', value)
            #df.to_excel(writer, header = False, startcol=1, startrow=3)
        else:
            worksheet2.write('A3', value) 


writer.save()
writer.close()
writer2.save()
writer2.close()
workbook.close()
workbook2.close()

KeyError:“ Sheet1”,我的預期輸出是它開始打印數據,而標題不從A3開始

import csv
import pandas as pd

with open(r'C:/workbench/SemiFinale/train.csv', 'r') as csvfile:
   spamreader = csv.reader(csvfile)
   newlist= list(spamreader)

df = pd.DataFrame(newlist[1:], columns=newlist[0])

writer= pd.ExcelWriter('Test1.xlsx',engine='xlsxwriter')
df.to_excel(writer, header = False, sheet_name='Sheet1', startcol=1, startrow=10)  # startcol, startrow can be used in this condition
df.to_excel(writer, header = False, sheet_name='Sheet2', startcol=3, startrow=6)

# Above code successfully saves dataframe values in excel format
# And to satisfy your if condition you can use it as below format

# for column in df:
#    for col, sf in enumerate(data):
#       if (condition staisfied):
#          df.to_excel(writer, header = False, sheet_name='Sheet1', startcol=1, startrow=10)
#       else:
#          df.to_excel(writer, header = False, sheet_name='Sheet2', startcol=3, startrow=6)

writer.save()
writer.close()

編輯現有工作表的方式

import csv
import pandas as pd

with open(r'C:/workbench/SemiFinale/train.csv', 'r') as csvfile:
   spamreader = csv.reader(csvfile)
   newlist= list(spamreader)

df = pd.DataFrame(newlist[1:], columns=newlist[0])

# Creation of writer object 

writer= pd.ExcelWriter('Test1.xlsx',engine='xlsxwriter')

# This is first time creation and saving of file

df.to_excel(writer, header = False, sheet_name='Sheet1', startcol=5, startrow=10)  # startcol, startrow can be used in this condition
df.to_excel(writer, header = False, sheet_name='Sheet2', startcol=8, startrow=6)

#This is for reading of file, but first above code needs to be executed

workbook  = writer.book
worksheet1 = writer.sheets['Sheet1']
worksheet2 = writer.sheets['Sheet2']

value = "abc"
col_num = 10
worksheet1.write('A1', value)
workbook.close()


writer.save()
writer.close()

暫無
暫無

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

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