首页 > 解决方案 > 从一个括号内包含多个值集的单个值创建设置值列表

问题描述

所以我目前有一列包含这样的值:

d = {'col1': [LINESTRING(174.76028 -36.80417,174.76041 -36.80389, 175.76232 -36.82345)]
df = pd.DataFrame(d)

我正在努力做到这一点,以便我可以:

1) 对每个数值应用一个函数,并且

2)最终得到这样的东西。

d = {'col1': [LINESTRING], 'col2': [(174.76028, -36.80417),(174.76041 -36.80389), (175.76232 -36.82345)]
df = pd.DataFrame(d)

有什么想法吗?

谢谢

标签: pythondataframe

解决方案


这是一种方法。请注意,它LineString接受一个有序的元组集合作为输入。有关更多信息,请参阅文档

我们使用operator.attrgetter来访问所需的属性:coords__class__.__name__

import pandas as pd
from operator import attrgetter

class LineString():
    def __init__(self, list_of_coords):
        self.coords = list_of_coords
        pass

df = pd.DataFrame({'col1': [LineString([(174.76028, -36.80417), (174.76041, -36.80389), (175.76232, -36.82345)])]})

df['col2'] = df['col1'].apply(attrgetter('coords'))
df['col1'] = df['col1'].apply(attrgetter('__class__')).apply(attrgetter('__name__'))

print(df)

         col1                                               col2
0  LineString  [(174.76028, -36.80417), (174.76041, -36.80389...

推荐阅读