内计算新列这个问题似乎简单的给我,但我已经在这上面花了两天,并没有发现任何东西作为尚未...大熊猫从另外两个列变量数据帧
要重申的问题:如何计算熊猫数据框中的新列,其值是将另外两个变量作为位于同一数据框中的参数的函数的返回结果。
以下是我正在使用的数据框的简化示例。
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