簡體   English   中英

迭代行並將值附加到數據框中的列

[英]Iterate over rows and append values to column in dataframe

我正在嘗試遍歷行並將圖 1 中顯示的數據轉換為圖 2 中的數據。

在獲取相應的 Quarter 值時遇到問題,因為我為每種顏色獲得的列表不是按順序排列的。 你能建議我如何獲得Pic2的結果嗎?

b=[]
r=[]
g=[]
p=[]
for col, col_val in Sample.iteritems():
    for i in col_val.values:
        if 'Blue' in i:
            b.append(i[i.find('(')+1 : i.find('-')])
        elif 'Purple' in i:
            p.append(i[i.find('(')+1 : i.find('-')])
        elif 'Green' in i:
            g.append(i[i.find('(')+1 : i.find('-')])
        elif 'Red' in i:
            r.append(i[i.find('(')+1 : i.find('-')])

圖1圖2

iteritemsiterrows取代的問題得到了解決。

b=[]
r=[]
g=[]
p=[]
q=[]
for col, col_val in Sample.iterrows():
    for i in col_val.values:
        if 'Blue' in i:
            b.append(pd.to_numeric(i[i.find('(')+1 : i.find('-')]))
        elif 'Purple' in i:
            p.append(pd.to_numeric(i[i.find('(')+1 : i.find('-')]))
        elif 'Green' in i:
            g.append(pd.to_numeric(i[i.find('(')+1 : i.find('-')]))
        elif 'Red' in i:
            r.append(pd.to_numeric(i[i.find('(')+1 : i.find('-')]))
        else:
            q.append(i)
pd.DataFrame(list(zip(q,g,p,r,b))).rename(columns={0:'Quarter',1:'Green',2:'Purple',3:'Red',4:'Blue'})

我考慮了一種不同的方法。 我想出了另一種方法:垂直連接索引列和目標列,然后拆分列並垂直連接。 我認為這會更容易,但它很繁瑣。

df.columns = ['Quarter','value','value','value','value']
df1 = pd.DataFrame()
for i in range(1,len(df.columns)):
    df1 = df1.append(df.iloc[:,[0,i]], ignore_index=True)

df2 = pd.concat([df1[['Quarter']], df1['value'].str.split("(", expand=True)], axis=1)
df2 = pd.concat([df2[['Quarter',0]], df2[1].str.split('-', expand=True)], axis=1)

df2.columns = ['Quarter', 'color', 'value', 'tmp']
df2.drop('tmp', inplace=True, axis=1)

final = pd.DataFrame()
for k in df2['Quarter'].unique():
    tmp = df2[df2['Quarter'] == k]
    tmp = tmp.pivot(index='Quarter',columns='color')
    final = final.append(tmp, ignore_index=True)

final = final.droplevel(0, axis=1)
final['Quarter'] = df2['Quarter'].unique()
final = final[['Quarter','Green','Purple','Red','Blue']]

final
color   Quarter Green   Purple  Red Blue
0   Q2  1   6   4   3
1   Q3  6   10  2   7
2   Q4  3   7   6   2

暫無
暫無

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

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