簡體   English   中英

在熊貓數據框上迭代數學函數

[英]Iterating a mathematical function over a pandas data frame

我正在嘗試對數據框進行計算。 datarframe有65列。

id_1 Id_2   sum_id1 Sum_id2 Price   Cal_1   Cal_2
1    5      15      35      2       -68     -60
2    6      15      35      3       -99     -87
3    7      15      35      4       -128    -112
4    8      15      35      5       -155    -135
5    9      15      35      6       -180    -156

給出了從ID_1到價格的列。 計算方式為(ID_1-SumID_1)*價格。 我必須對此進行60列的迭代。 所以我需要一個迭代的解決方案。

我已經嘗試過Numpy的方法,但是它對於一種計算很有用。 我必須遍歷60多個列。

使用字符串替換的for循環怎么樣?

# assuming there are 60 unique values
n = 60
for i in range(1, n+1):
    df[f'Cal_{i}'] = (df[f'Id_{i}'] - df[f'SumID_{i}']) * df['Price']

我使用的filter ,並重新創建數據框,然后concat

s=(df.filter(like='Id').values-df.filter(like='Sum').values)*df.Price.values[:,None]
s=pd.DataFrame(s,columns=['Cal_'+str(x+1) for x in range(s.shape[1])],index=df.index)
df=pd.concat([df,s],axis=1)
df
   Id_1  Id_2  sum_id1  Sum_id2  Price  Cal_1  Cal_2
0     1     5       15       35      2    -68    -60
1     2     6       15       35      3    -99    -87
2     3     7       15       35      4   -128   -112
3     4     8       15       35      5   -155   -135
4     5     9       15       35      6   -180   -156

暫無
暫無

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

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