切片存在于 pandas 数据框中的列表项
Slicing a list item that exists in a pandas dataframe
我有一个列表(名为 split_dfs),其中包含多个数据框,每个数据框有 100 行。这些数据框每个都包含带有存储在列表中的坐标数据的列。即有一个名为 Destination Coordinates 的列,每一行都有诸如 [41.67907634659514, -73.88281655538246, 0.0] 之类的数据。它们看起来如下:
我正在尝试计算两个坐标列之间的英里差,但很明显,其中一个坐标列有 3 个点(0 表示高度),这会导致计算错误。重申一下,坐标列中的每一行都包含一个列表。
我如何遍历列表中的每个数据帧并对目标坐标列进行切片以去除第 3 个点并仅保留每行中的前 2 个点。我尝试了以下方法:
for i in split_dfs:
for x in i["Destination Coordinates"]:
x=x[:2]
这个returns'NoneType object is not subscriptable'。如果我在每个数据帧的列表理解中单独执行转换,我尝试执行的转换即:
first_group["Destination Coordinates"]=[i[:2] for i in first_group["Destination Coordinates"]]
我希望能够在循环中执行此操作,而不是为每个数据帧单独编写代码。
谢谢。
您不能以这种方式更改数据框的元素。
你想要的大概是:
for i in split_dfs:
i['Destination Coordinates'] = i['Destination Coordinates'].transform(
lambda x: x[:2] if isinstance(x, list) else x)
我有一个列表(名为 split_dfs),其中包含多个数据框,每个数据框有 100 行。这些数据框每个都包含带有存储在列表中的坐标数据的列。即有一个名为 Destination Coordinates 的列,每一行都有诸如 [41.67907634659514, -73.88281655538246, 0.0] 之类的数据。它们看起来如下:
我正在尝试计算两个坐标列之间的英里差,但很明显,其中一个坐标列有 3 个点(0 表示高度),这会导致计算错误。重申一下,坐标列中的每一行都包含一个列表。
我如何遍历列表中的每个数据帧并对目标坐标列进行切片以去除第 3 个点并仅保留每行中的前 2 个点。我尝试了以下方法:
for i in split_dfs:
for x in i["Destination Coordinates"]:
x=x[:2]
这个returns'NoneType object is not subscriptable'。如果我在每个数据帧的列表理解中单独执行转换,我尝试执行的转换即:
first_group["Destination Coordinates"]=[i[:2] for i in first_group["Destination Coordinates"]]
我希望能够在循环中执行此操作,而不是为每个数据帧单独编写代码。
谢谢。
您不能以这种方式更改数据框的元素。
你想要的大概是:
for i in split_dfs:
i['Destination Coordinates'] = i['Destination Coordinates'].transform(
lambda x: x[:2] if isinstance(x, list) else x)