內計算新列這個問題似乎簡單的給我,但我已經在這上面花了兩天,並沒有發現任何東西作爲尚未...大熊貓從另外兩個列變量數據幀
要重申的問題:如何計算熊貓數據框中的新列,其值是將另外兩個變量作爲位於同一數據框中的參數的函數的返回結果。
以下是我正在使用的數據框的簡化示例。
ix sat_id datetime signal
0 13 11/13/2015 16:33 654884
1 13 11/13/2015 16:33 654883
2 87 11/13/2015 16:33 657889
3 87 11/13/2015 16:33 558774
4 87 11/13/2015 16:33 555222
5 99 11/13/2015 16:33 444555
6 99 11/13/2015 16:33 444333
我有一個返回的星曆高度即需要全局參數爲緯度/經度,datetime和被鍵控關閉satid簡化如下的兩個線路的元素列表的可變參數的函數。
def ephem_func(datetime,tle[satid],lat,lon):
do_ephemeris_calcs...
return altitude
由於我的功能是依賴於satid和日期時間,它們都發現了我的數據框裏面我希望做這樣的事情:
df['altitude'] = (df['datetime'], df['sat_id']).map(lambda x, y: ephem_func(x,tle[y],lat,lon))
然而,這是不是一個東西,不管多少次我說「python please」它不起作用。
grouped = df.groupby('sat_id')
for key, item in grouped:
item['altitude'] = item['datetime'].map(lambda x: ephem_func(x,tle[key],lat,lon))
但是,使用這種方法,我不認爲我實際上分配值回到我原來的數據幀:
我也用熊貓GROUPBY來解決這個如下嘗試。如果我修改數據幀被分配到代表原始如下:
df['altitude'] = item['datetime'].map(lambda x: ephem_func(x,tle[key], lat,lon))
然後,我碰上了分組數據的每個新的迭代的問題,分配新的值返回到原來的數據幀,但是從以前的覆蓋行用nan進行迭代。
預期結果:將包含在我的數據框(sat_id和datetime)中的兩個變量傳遞到我的函數中,並將返回值指定爲新列。
index sat_id datetime signal altitude
0 13 11/13/2015 16:33 654884 45
1 13 11/13/2015 16:33 654883 65
2 87 11/13/2015 16:33 657889 -45
3 87 11/13/2015 16:33 558774 90
4 87 11/13/2015 16:33 555222 88
5 99 11/13/2015 16:33 444555 77
6 99 11/13/2015 16:33 444333 66
任何指導意見在這裏讚賞。謝謝!
感謝您的回覆,但我認爲您錯過了我的問題。對不起,如果我不清楚,我已更新我的帖子,以更好地說明所需的結果和被問到的問題。我不相信這個功能的內部運作與這個問題有關 – fireitup