简体   繁体   中英

Write Dataframe row to excel sheet using Pandas

How do I save returned row from dataframe into excel sheet?

Story: Am working with large txt file (1.7M rows), containing postal codes for Canada. I created a dataframe, and extracted values I need into it. One column of the dataframe is the province id (df['PID']) . I created a list of the unique values found in that PID column, and am successfully creating the (13) sheets, each named after the unique PID, in a new excel spread sheet.

Problem: Each sheet only contains the headers, and not the values of the row.

I am having trouble writing the matching row to the sheet. Here is my code:

import pandas as pd

# parse text file into dataframe
path = 'the_file.txt'
df = pd.read_csv(path, sep='\t', header=None, names=['ORIG', 'PID','PCODE'], encoding='iso-8859-1')

# extract characters to fill values
df['ORIG'] = df['ORIG']
df['PID'] = df['ORIG'].str[11:13].astype(int)
df['PCODE'] = df['ORIG'].str[:6]

# create list of unique province ID's
prov_ids = df['PID'].unique().tolist()
prov_ids_string = map(str, prov_ids)

# create new excel file
writer = pd.ExcelWriter('CanData.xlsx', engine='xlsxwriter')

for id in prov_ids_string:
    mydf = df.loc[df.PID==id]
    # NEED TO WRITE VALUES FROM ROW INTO SHEET HERE*
    mydf.to_excel(writer, sheet_name=id)

writer.save()

I know where the writing should happen, but I haven't gotten the correct result. How can I write only the rows which have matching PID's to their respective sheets?

Thank you

The following should work:

import pandas as pd
import xlsxwriter
# parse text file into dataframe

# extract characters to fill values
df['ORIG'] = df['ORIG']
df['PID'] = df['ORIG'].str[11:13].astype(int)
df['PCODE'] = df['ORIG'].str[:6]

# create list of unique province ID's
prov_ids = df['PID'].unique().tolist()
#prov_ids_string = map(str, prov_ids)

# create new excel file
writer = pd.ExcelWriter('./CanData.xlsx', engine='xlsxwriter')

for idx in prov_ids:
    mydf = df.loc[df.PID==idx]
    # NEED TO WRITE VALUES FROM ROW INTO SHEET HERE*
    mydf.to_excel(writer, sheet_name=str(idx))

writer.save()

For example data:

df = pd.DataFrame()
df['ORIG'] = ['aaaaaa111111111111111111111',
             'bbbbbb2222222222222222222222']
df['ORIG'] = df['ORIG']
df['PID'] = df['ORIG'].str[11:13].astype(int)
df['PCODE'] = df['ORIG'].str[:6]
print(df)

In my Sheet 11 , I have: 在此处输入图像描述

Kr.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM