Создание списка значений набора из одного значения, содержащего несколько наборов значений в одной скобке - PullRequest
0 голосов
/ 22 мая 2018

, поэтому у меня в настоящее время есть столбец, содержащий такие значения:

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)

Есть мысли?

Спасибо

1 Ответ

0 голосов
/ 22 мая 2018

Вот один из способов.Обратите внимание, что 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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...