我有很多行看起來像下圖。我正在嘗試為非常長的“區域”列中的每個值創建一個新行。每個新行都會從前三列復制資料,并在列中保留下一個“區域”值。
行示例
期望輸出
我相信 Pandas 中的爆炸方法是我所需要的,但我的資料并沒有以我期望的方式從串列中爆發出來。
#Constants and Public Variables
df = pd.read_excel("input.xlsx", sheet_name=0, usecols='D,G,H,K')
df = df.dropna()
new_header = df.iloc[0] #grab the first row for the header
df = df[1:] #take the data less the header row
df.columns = new_header #set the header row as the df header
zones = [['CA2,SW1,SW3,SW2,STH2,STH3,STH0,NTH0,DR1,DR2,MID1,MID2,MID3,NE1,NE2,NE3,NTH1,NTH2,NTH3,PLN1,PLN2,PLN3,NW1,NW2'],['CA2,SW1,SW3,SW2,STH2,STH3,STH0,NTH0,DR1,DR2,MID1,MID2,MID3,NE1,NE2,NE3,NTH1,NTH2,NTH3,PLN1,PLN2,PLN3,NW1,NW2'],['CA2,SW1,SW3,SW2,STH2,STH3,STH0,NTH0,DR1,DR2,MID1,MID2,MID3,NE1,NE2,NE3,NTH1,NTH2,NTH3,PLN1,PLN2,PLN3,NW1,NW2']]
replace_values = ['All Zones', 'All Zones ', 'all']
df = df.replace(to_replace=replace_values, value=zones)
df = df.explode("ZONES")
df.to_csv("outout.csv")
uj5u.com熱心網友回復:
嘗試這個:
import pandas as pd
id = [3609112]
reg_price = [3.99]
promo_price = [3.99]
zones = ["CA2,SW1,SW3,SW2"]
df = pd.DataFrame(id, columns=['id'])
df['reg_price'] = reg_price
df['promo_price'] = promo_price
df['zones'] = zones
def convert_to_list(row):
arr = row.split(',')
l = [x for x in arr]
return l
df['zones'] = df['zones'].apply(convert_to_list)
print(df.explode('zones'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/321814.html
