pandas 根据内置条件(global_land_mask)将True/False写入新列

mrphzbgm  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(119)

我有一个CSV文件,其中包含一组位置(lats和隆恩)以及其他变量,我想使用 global_land_mask 库来识别这些位置中的哪些是在陆地上。我想将结果(True/False)写入新列('Land_Sea')。
| | 国家|ID|站点名称|纬度|经度|
| - -----|- -----|- -----|- -----|- -----|- -----|
| 2013年|TX| ABI|阿比林|32.4106| -99.6821 |
| 二○一四年|TX| GYF|阿拉米诺斯峡谷857座|26.129| -94.898 |
| 2015年|TX| ALI|爱丽丝国际机场|二十七七四零九| -98.0269 |
| 2016年|TX| E38|阿尔卑斯山|30.384| -103.684 |
| 2017年|TX| AMA| AMARILLO ARPT(AWOS)|三五二一九四| -101.706 |
这是我尝试使用的代码。它运行,但没有输出。我试过使用不同的方法,我发现网上没有用。我能做错什么了,拜托?

import pandas as pd
from global_land_mask import globe

texas = pd.read_csv('tx.csv')
# Create a column, title it, and put in the data. Syntax: df.insert(col index, 'col name', 'data')
tx_land_sea = texas.insert(5, 'Land_Sea', globe.is_land(texas['Latitude'], texas['Longitude']))
tx_land_sea
rbpvctlc

rbpvctlc1#

您可以用途:

# is the lat/lon on land ?
on_land = [
    globe.is_land(lat, lon) for lat,lon in zip(
        texas['Latitude'], texas['Longitude'])
]

#another variant with `.apply`
# on_land = texas.apply(lambda x: globe.is_land(x['Latitude'], x['Longitude']), axis=1)

tx_land_sea = texas.assign(Land_Sea=on_land) #the new col is inserted at the end

输出:

print(tx_land_sea)

     State   ID               Station_Name  Latitude  Longitude  Land_Sea
2013    TX  ABI                    Abilene  32.41063  -99.68209      True
2014    TX  GYF  Alaminos Canyon Block 857  26.12900  -94.89800     False
2015    TX  ALI         ALICE INTL AIRPORT  27.74089  -98.02694      True
2016    TX  E38                     ALPINE  30.38400 -103.68400      True
2017    TX  AMA       AMARILLO ARPT (AWOS)  35.21936 -101.70592      True

相关问题