如何将双括号分隔元素的列表转换为Python DataFrame?
将嵌套多边形列表转换为DataFrame
原始数据
用户提供的嵌套列表(每个外层子列表对应一个多边形):
[[[33.79277702, -104.3900481], [35.79415582, -104.39016576], [38.7939, -107.31792], [31.792589, -188.38847], [36.79221, -108.388367], [36.79238003, -108.38905313]], [[38.1726905, -54.85042496], [30.179095, -84.88893], [36.17621409, -84.78], [39.17534035, -84.8481921], [31.17427369, -84.8499793], [50.17466907, -84.8578298]], [[46.71949073, -109.69390116], [46.72091429, -109.69484574], [46.72077, -107.69432], [46.7199, -107.6916]], [[43.60399, -76.963267], [43.60534111, -79.96221766], [43.6049, -78.9613]], [[41.93863726, -81.33993917], [43.93630951, -81.33862768], [43.9369507, -81.33917589]], [[12.19490918, -103.10334755], [34.19538203, -124.10439655], [22.19548313, -194.10379399], [22.19505863, -194.10286483]], [[38.99843815, -107.81278381], [38.99904541, -107.81251648], [38.99930408, -107.81234494], [32.99882888, -102.81252263]], [[36.3735, -161.8463], [36.3741, -161.8481], [36.374, -161.8466]]]
期望输出
每个多边形子列表对应DataFrame的一行,格式如下:
polygon [[[[33.79277702, -104.3900481],[35.79415582,-104.39016576], [38.7939, -107.31792], [31.792589, -188.38847], [36.79221, -108.388367],[36.79238003, -108.38905313]]] [[[38.1726905, -54.85042496],[30.179095, -84.88893], [36.17621409, -84.78],[39.17534035, -84.8481921], [31.17427369, -84.8499793],[50.17466907, -84.8578298]]] ...
解决方案
你不需要特意按双括号拆分,这本身就是一个Python嵌套列表,外层的每个元素就是一个多边形数据。直接用pandas把这个列表包装成DataFrame即可,每个外层子列表会自动成为一行。
代码实现
import pandas as pd # 你的原始嵌套列表 polygons = [[[33.79277702, -104.3900481], [35.79415582, -104.39016576], [38.7939, -107.31792], [31.792589, -188.38847], [36.79221, -108.388367], [36.79238003, -108.38905313]], [[38.1726905, -54.85042496], [30.179095, -84.88893], [36.17621409, -84.78], [39.17534035, -84.8481921], [31.17427369, -84.8499793], [50.17466907, -84.8578298]], [[46.71949073, -109.69390116], [46.72091429, -109.69484574], [46.72077, -107.69432], [46.7199, -107.6916]], [[43.60399, -76.963267], [43.60534111, -79.96221766], [43.6049, -78.9613]], [[41.93863726, -81.33993917], [43.93630951, -81.33862768], [43.9369507, -81.33917589]], [[12.19490918, -103.10334755], [34.19538203, -124.10439655], [22.19548313, -194.10379399], [22.19505863, -194.10286483]], [[38.99843815, -107.81278381], [38.99904541, -107.81251648], [38.99930408, -107.81234494], [32.99882888, -102.81252263]], [[36.3735, -161.8463], [36.3741, -161.8481], [36.374, -161.8466]]] # 转换为DataFrame,每个外层元素作为一行 df = pd.DataFrame({'polygon': polygons}) # 如果需要让每个多边形再嵌套一层(和示例格式完全一致),用lambda包装 df['polygon'] = df['polygon'].apply(lambda x: [x]) # 查看结果 print(df)
说明
- 原始列表的外层结构已经按多边形划分,
pandas.DataFrame会直接把每个外层子列表作为polygon列的一行值。 - 若需要和示例格式完全匹配(每个多边形额外嵌套一层列表),用
apply(lambda x: [x])给每个元素再套一层括号即可。
内容的提问来源于stack exchange,提问作者JEG
相关产品推荐
相关产品推荐

