gpt4 book ai didi

python - Pandas DataFrame.apply : create new column with data from two columns

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:39 25 4
gpt4 key购买 nike

我有一个像这样的 DataFrame (df):

PointID  Time                 geojson
---- ---- ----
36F 2016-04-01T03:52:30 {'type': 'Point', 'coordinates': [3.961389, 43.123]}
36G 2016-04-01T03:52:50 {'type': 'Point', 'coordinates': [3.543234, 43.789]}

geojson 列包含 geoJSON 格式的数据(本质上是 Python 字典)。

我想创建一个包含时间坐标的 geoJSON 格式的新列。换句话说,我想将时间信息注入(inject)到 geoJSON 信息中。

对于单个值,我可以成功地做到:

oldjson = df.iloc[0]['geojson']
newjson = [df['coordinates'][0], df['coordinates'][1], df.iloc[0]['time'] ]

对于单个参数,我成功地将 dataFrame.apply 与 lambda 结合使用(感谢 SO: related question

但是现在,我有两个参数,我想在整个 DataFrame 上使用它。由于我对 .apply 语法和 lambda 没有信心,我不知道这是否可行。我想做这样的事情:

def inject_time(geojson, time):
"""
Injects Time dimension into geoJSON coordinates. Expects a dict in geojson POINT format.
"""
geojson['coordinates'] = [geojson['coordinates'][0], geojson['coordinates'][1], time]
return geojson


df["newcolumn"] = df["geojson"].apply(lambda x: inject_time(x, df['time'])))

...但这不起作用,因为该函数会注入(inject)整个系列。

编辑:我认为带时间戳的 geoJSON 的格式应该是这样的:

TimestampedGeoJson({
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [[-70,-25],[-70,35],[70,35]],
},
"properties": {
"times": [1435708800000, 1435795200000, 1435881600000]
}
}
]
})

所以时间元素在properties元素中,但这并没有太大改变问题。

最佳答案

你需要DataFrame.apply axis=1 按行处理:

df['new'] = df.apply(lambda x: inject_time(x['geojson'], x['Time']), axis=1)

#temporary display long string in column
with pd.option_context('display.max_colwidth', 100):
print (df['new'])

0 {'type': 'Point', 'coordinates': [3.961389, 43.123, '2016-04-01T03:52:30']}
1 {'type': 'Point', 'coordinates': [3.543234, 43.789, '2016-04-01T03:52:50']}
Name: new, dtype: object

关于python - Pandas DataFrame.apply : create new column with data from two columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44588039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com