Python中如何在元组列表内创建嵌套元组
解决方案
这里有几种便捷的方式实现你要的嵌套元组结构:
方法1:列表推导式直接构造嵌套元组
无需先生成完整元组再修改,直接在遍历每行时就构建目标结构:
import pandas as pd data = {'X_coords':[398905, 492561, 496561], 'Y_coords':[6340963, 6526362, 6527362], 'YEAR': [2019, 2020, 2020], 'ID':[1,2,3]} df = pd.DataFrame(data) # 遍历每行,将前两列组成元组后拼接后续列 df_tuple = [((row[0], row[1]), row[2], row[3]) for row in df.values] print(df_tuple)
输出:
[((398905, 6340963), 2019, 1), ((492561, 6526362), 2020, 2), ((496561, 6527362), 2020, 3)]
方法2:使用Pandas的apply函数(可读性更强)
如果想贴合Pandas的操作风格,用列名而非索引来处理,避免列顺序变化影响结果:
import pandas as pd data = {'X_coords':[398905, 492561, 496561], 'Y_coords':[6340963, 6526362, 6527362], 'YEAR': [2019, 2020, 2020], 'ID':[1,2,3]} df = pd.DataFrame(data) # 定义转换逻辑 def make_nested_tuple(row): return ((row['X_coords'], row['Y_coords']), row['YEAR'], row['ID']) # 应用函数并转为列表 df_tuple = df.apply(make_nested_tuple, axis=1).tolist() print(df_tuple)
输出与方法1完全一致。
方法3:修改已生成的原始元组列表
如果已经有了初始的元组列表,直接解构重组即可:
original_tuple = [(398905, 6340963, 2019, 1), (492561, 6526362, 2020, 2), (496561, 6527362, 2020, 3)] nested_tuple = [((x[0], x[1]), x[2], x[3]) for x in original_tuple] print(nested_tuple)
内容的提问来源于stack exchange,提问作者Foeke Boersma
相关产品推荐
相关产品推荐

