熊猫从数据框中的其他两个列变量计算新列

燃烧起来;动起来

这个问题对我来说似乎很简单,但是我花了几天时间,到目前为止还没有发现任何东西。

重申一下问题:我如何在pandas数据框中计算新列,其值是函数的返回结果,该函数将另外两个变量作为位于同一数据框中的args。

这是我正在使用的数据框的简化示例。

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

我有一个返回星历表高度的函数,该函数使用纬度/经度的全局参数,日期时间的变量参数,以及以简单的方式键入的两个线元素的列表,简化如下。

def ephem_func(datetime,tle[satid],lat,lon):
    do_ephemeris_calcs...
    return altitude

由于我的功能取决于在数据框内找到的satid和datetime,因此我希望这样做:

df['altitude'] = (df['datetime'], df['sat_id']).map(lambda x, y: ephem_func(x,tle[y],lat,lon))

但是,这不是问题,无论我说“请python多少次”,它都不起作用。

我还尝试使用pandas groupby来解决此问题,如下所示:

grouped = df.groupby('sat_id')

for key, item in grouped:
    item['altitude'] = item['datetime'].map(lambda x: ephem_func(x,tle[key],lat,lon))

但是,使用这种方法,我认为我实际上并没有将值分配回我的原始数据帧。如果我修改分配的数据帧以代表原始数据,如下所示:

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

任何指导在这里表示赞赏。谢谢!

燃烧起来;动起来

好的,所以我还没有找到一个非常pythonic或Pandas风格的解决方案,但是我确实修改了我的大图逻辑,以便使用groupby和一些严重的数据改组来获取想要的东西...

请记住,我的简化函数的结构如下:

def ephem_func(datetime,tle[satid],lat,lon):
    do_ephemeris_calcs...
    return altitude

我有如下数据

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

这是我的解决方案:

grouped = df.groupby('sat_id')

for key,item in grouped:
    date_range = []
    ix_range = []
    date_range = item['datetime']
    ix_range = item['ix']

    for date,ix in zip(date_range,ix_range):
        satlist.append(key)
        datelist.append(date)
        ixlist.append(ix)
        alt = ephem_func(date,tle[key],lat,lon)
        altitude.append(alt)

现在,我有了所有这些列表,我可以创建一个新的数据框“结果”,使用ix作为合并键,将日期与原始数据框合并回去,以确保所有内容都保持对齐结果= pandas.DataFrame()

results['datetime'] = datelist
results['ix'] = ixlist
results['sat_id'] = satlist
results['altitude'] = altitude

final=pd.merge(df,results,on='ix')

这对我有用,并将计算出的海拔高度与我开始使用的其余数据合并到一个数据框中。

如果您有更有效的方法,请回覆!

谢谢

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 5-根据其他两个变量计算对象变量

来自分类Dev

如何根据原点开始的其他两个向量计算新向量?

来自分类Dev

根据数据框中的其他变量计算变量的因数

来自分类Dev

根据其他列中的字符串变量计算时间

来自分类Dev

Pyspark-使用数据框中其他两个列的RMSE创建新列

来自分类Dev

使用 BigQuery 中的变量计算其他变量

来自分类Dev

通过比较不同数据框中的其他两个列来创建新的数据框列

来自分类Dev

用两个双变量计算

来自分类Dev

使用两个自变量计算 numpy 数据的最有效方法

来自分类Python

熊猫:在数据框中创建两个新列,并使用从现有列中计算出的值

来自分类Python

熊猫:在数据框中创建两个新列,并使用从现有列中计算出的值

来自分类Dev

我想过滤出一个非数字值,并使用数据框(熊猫)中的其他两列来计算它的新值

来自分类Dev

如何根据其他两列中的值在熊猫数据框中添加新列

来自分类Python

如何基于Pandas数据框中其他多个列的值添加两个新列?

来自分类Dev

根据熊猫中其他两个列的匹配值创建新列

来自分类Dev

检查是否在其他熊猫数据框中找到两个列值

来自分类Dev

基于来自其他两个数据帧的值批量计算数据帧单元格

来自分类Dev

根据其他两个数据框列中的值条件创建新列

来自分类Dev

根据一列中唯一值的数量计算出的新变量

来自分类Dev

使用变量计算data.table中的列

来自分类Dev

根据其他两个变量在数据框中创建一个新变量

来自分类Dev

计算熊猫数据框中两个hh:mm列之间的时间差

来自分类Dev

熊猫数据框中的两个大列之间的计算

来自分类Dev

根据数据框B中其他两个列给定的范围填充数据框A中的列

来自分类Dev

熊猫数据框基于其他数据框的列创建一个新列

来自分类Dev

如何在具有两个条件的熊猫数据框中添加新列?

来自分类Dev

在SAS中创建从其他变量计算得出的变量

来自分类Dev

生成一个新的列,计算R中其他两个列之间共享字的数量。

来自分类Dev

计算熊猫数据框中的新列

Related 相关文章

  1. 1

    Rails 5-根据其他两个变量计算对象变量

  2. 2

    如何根据原点开始的其他两个向量计算新向量?

  3. 3

    根据数据框中的其他变量计算变量的因数

  4. 4

    根据其他列中的字符串变量计算时间

  5. 5

    Pyspark-使用数据框中其他两个列的RMSE创建新列

  6. 6

    使用 BigQuery 中的变量计算其他变量

  7. 7

    通过比较不同数据框中的其他两个列来创建新的数据框列

  8. 8

    用两个双变量计算

  9. 9

    使用两个自变量计算 numpy 数据的最有效方法

  10. 10

    熊猫:在数据框中创建两个新列,并使用从现有列中计算出的值

  11. 11

    熊猫:在数据框中创建两个新列,并使用从现有列中计算出的值

  12. 12

    我想过滤出一个非数字值,并使用数据框(熊猫)中的其他两列来计算它的新值

  13. 13

    如何根据其他两列中的值在熊猫数据框中添加新列

  14. 14

    如何基于Pandas数据框中其他多个列的值添加两个新列?

  15. 15

    根据熊猫中其他两个列的匹配值创建新列

  16. 16

    检查是否在其他熊猫数据框中找到两个列值

  17. 17

    基于来自其他两个数据帧的值批量计算数据帧单元格

  18. 18

    根据其他两个数据框列中的值条件创建新列

  19. 19

    根据一列中唯一值的数量计算出的新变量

  20. 20

    使用变量计算data.table中的列

  21. 21

    根据其他两个变量在数据框中创建一个新变量

  22. 22

    计算熊猫数据框中两个hh:mm列之间的时间差

  23. 23

    熊猫数据框中的两个大列之间的计算

  24. 24

    根据数据框B中其他两个列给定的范围填充数据框A中的列

  25. 25

    熊猫数据框基于其他数据框的列创建一个新列

  26. 26

    如何在具有两个条件的熊猫数据框中添加新列?

  27. 27

    在SAS中创建从其他变量计算得出的变量

  28. 28

    生成一个新的列,计算R中其他两个列之间共享字的数量。

  29. 29

    计算熊猫数据框中的新列

热门标签

归档