第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在數(shù)據(jù)幀上應(yīng)用函數(shù)計算 int 和 series 之間的差異冪

在數(shù)據(jù)幀上應(yīng)用函數(shù)計算 int 和 series 之間的差異冪

守候你守候我 2023-12-20 16:03:08
我正在嘗試使用 apply 函數(shù)向數(shù)據(jù)框添加新列。我需要計算第 0 行和所有其他行中 X 和 Y 坐標之間的距離,我創(chuàng)建了以下邏輯:import pandas as pdimport numpy as npdata = {'X':[0,0,0,1,1,5,6,7,8],'Y':[0,1,4,2,6,5,6,4,8],'Value':[6,7,4,5,6,5,6,4,8]}df = pd.DataFrame(data)def countDistance(lat1, lon1, lat2, lon2):        print(lat1, lon1, lat2, lon2)        #use basic knowledge about triangles - values are in meters        distance = np.sqrt(np.power(lat1-lat2,2)+np.power(lon1-lon2,2))        return distancedef recModif(df):        x = df.loc[0,'X']        y = df.loc[0,'Y']        df['dist'] = df.apply(lambda n: countDistance(x,y,df['X'],df['Y']), axis=1)        #more code will come hererecModif(df)但這總是返回錯誤:ValueError: Wrong number of items passed 9, placement implies我認為由于 x 和 y 是標量,使用np.repeat可能有幫助,但沒有幫助,錯誤仍然是相同的。我看到類似的帖子,例如this,但是乘法很簡單,我怎樣才能實現(xiàn)我需要的減法呢?
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

中的變量名稱.apply()混亂并與外部作用域發(fā)生沖突。避免這種情況,代碼就可以工作了。


df['dist'] = df.apply(lambda row: countDistance(x,y,row['X'],row['Y']), axis=1)


df

   X  Y  Value       dist

0  0  0      6   0.000000

1  0  1      7   1.000000

2  0  4      4   4.000000

3  1  2      5   2.236068

4  1  6      6   6.082763

5  5  5      5   7.071068

6  6  6      6   8.485281

7  7  4      4   8.062258

8  8  8      8  11.313708

另請注意, np.power() 和 np.sqrt() 已經(jīng)矢量化,因此 .apply 本身對于給定的數(shù)據(jù)集是多余的:


countDistance(x,y,df['X'],df['Y'])


Out[154]: 

0     0.000000

1     1.000000

2     4.000000

3     2.236068

4     6.082763

5     7.071068

6     8.485281

7     8.062258

8    11.313708

dtype: float64


查看完整回答
反對 回復(fù) 2023-12-20
?
眼眸繁星

TA貢獻1873條經(jīng)驗 獲得超9個贊

為了實現(xiàn)您的最終目標,我建議將函數(shù) recModif 更改為:


def recModif(df):

    x = df.loc[0,'X']

    y = df.loc[0,'Y']

    df['dist'] = countDistance(x,y,df['X'],df['Y'])

    #more code will come here

這輸出


X   Y   Value   dist

0   0   0   6   0.000000

1   0   1   7   1.000000

2   0   4   4   4.000000

3   1   2   5   2.236068

4   1   6   6   6.082763

5   5   5   5   7.071068

6   6   6   6   8.485281

7   7   4   4   8.062258

8   8   8   8   11.313708


查看完整回答
反對 回復(fù) 2023-12-20
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

解決方案

嘗試這個:


## Method-1

df['dist'] = ((df.X - df.X[0])**2 + (df.Y - df.Y[0])**2)**0.5


## Method-2: .apply()

x, y = df.X[0], df.Y[0]

df['dist'] = df.apply(lambda row: ((row.X - x)**2 + (row.Y - y)**2)**0.5, axis=1)

輸出:


# print(df.to_markdown(index=False))


|   X |   Y |   Value |     dist |

|----:|----:|--------:|---------:|

|   0 |   0 |       6 |  0       |

|   0 |   1 |       7 |  1       |

|   0 |   4 |       4 |  4       |

|   1 |   2 |       5 |  2.23607 |

|   1 |   6 |       6 |  6.08276 |

|   5 |   5 |       5 |  7.07107 |

|   6 |   6 |       6 |  8.48528 |

|   7 |   4 |       4 |  8.06226 |

|   8 |   8 |       8 | 11.3137  |

虛擬數(shù)據(jù)

import pandas as pd

data = {

    'X': [0,0,0,1,1,5,6,7,8],

    'Y': [0,1,4,2,6,5,6,4,8],

    'Value':[6,7,4,5,6,5,6,4,8]

}

df = pd.DataFrame(data)


查看完整回答
反對 回復(fù) 2023-12-20
  • 3 回答
  • 0 關(guān)注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號