簡體   English   中英

如何基於其他列創建 6 個新列

[英]How to create 6 new columns based on other columns

我有這個df:

        TMAX  TMIN    PP
CODE                  
000130   990  1026  1033
000132   799  1160   711
000134  1727  1680  1730
000135   576   626   791
000136  1348  1242  1203
     ...   ...   ...
000543   927   902  1341
000546   168   167   263
000547   383   359   315
000548   372   393   601
000549   811   896   919

[100 rows x 3 columns]

我想創建 6 個新列。 前三列將是 TMAXYEAR、TMINYEAR 和 PPYEAR,如下所示:

df['TMAXYEAR']=df['TMAX']/365
df['TMINYEAR']=df['TMIN']/365
df['PPYEAR']=df['PP']/365 

其他列將是 TMAXPERC TMINPERC 和 PPERC:

df['TMAXPERC']=df['TMAX']*100/10958
df['TMINPERC']=df['TMIN']*100/10958
df['PPERC']=df['PP']*100/10958  

我想知道是否有另一種更有效的方法來做到這一點。 我也在考慮:

dfyear=df[['TMAX','TMIN','PP']]/365
dfperc=df[['TMAX','TMIN','PP']]*100/10958

然后加入這兩個 df(dfyear 和 dfperc),但我仍然相信還有其他更有效的方法。

你介意幫助我嗎? 提前致謝。

您可以一次創建多個列,請嘗試:

l_cols=df.columns 
#or if you limit the columns l_cols=['TMAX', 'TMIN', 'PP']
df[l_cols + 'YEAR'] = df[l_cols]/365
df[l_cols + 'PERC'] = df[l_cols]*100/10958
print(df)

我認為使list中的更改列將來更易於維護

l = ['TMAX','TMIN','PP']
df = df.join((df[l]/365).add_suffix('YEAR').join((df[l]*100/10958).add_suffix('PERC')))
df
Out[167]: 
      TMAX  TMIN    PP  TMAXYEAR  ...    PPYEAR   TMAXPERC   TMINPERC     PPPERC
CODE                              ...                                           
130    990  1026  1033  2.712329  ...  2.830137   9.034495   9.363022   9.426903
132    799  1160   711  2.189041  ...  1.947945   7.291477  10.585873   6.488410
134   1727  1680  1730  4.731507  ...  4.739726  15.760175  15.331265  15.787552
135    576   626   791  1.578082  ...  2.167123   5.256434   5.712721   7.218471
136   1348  1242  1203  3.693151  ...  3.295890  12.301515  11.334185  10.978281
[5 rows x 9 columns]

暫無
暫無

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

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