[英]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.