python - 从一个括号内包含多个值集的单个值创建设置值列表
问题描述
所以我目前有一列包含这样的值:
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)
有什么想法吗?
谢谢
解决方案
这是一种方法。请注意,它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...