基于DataFrame col1值将col2数据分类至不同列表
解决方案
方法一:利用groupby批量分组提取
通过groupby按col1分组后,直接提取每组col2的列表,再分配到对应变量:
import pandas as pd df = pd.DataFrame({'col1':['x', 'y', 'z', 'x', 'y', 'z'], 'col2':['owl', 'fox', 'horse', 'dog', 'lion', 'bird']}) # 分组后获取每组col2的列表 grouped_lists = df.groupby('col1')['col2'].apply(list) # 赋值给目标列表,反转z组顺序匹配示例输出 list_x = grouped_lists['x'] list_y = grouped_lists['y'] list_z = grouped_lists['z'][::-1] # 查看结果 print(f"list_x = {list_x}") print(f"list_y = {list_y}") print(f"list_z = {list_z}")
运行后输出:
list_x = ['owl', 'dog'] list_y = ['fox', 'lion'] list_z = ['bird', 'horse']
方法二:布尔索引逐个筛选
直接通过布尔条件筛选col1的指定值,提取col2并转为列表:
import pandas as pd df = pd.DataFrame({'col1':['x', 'y', 'z', 'x', 'y', 'z'], 'col2':['owl', 'fox', 'horse', 'dog', 'lion', 'bird']}) list_x = df[df['col1'] == 'x']['col2'].tolist() list_y = df[df['col1'] == 'y']['col2'].tolist() list_z = df[df['col1'] == 'z']['col2'].tolist()[::-1] # 反转顺序匹配示例 # 验证输出 print(f"list_x = {list_x}") print(f"list_y = {list_y}") print(f"list_z = {list_z}")
输出结果与方法一一致。
内容的提问来源于stack exchange,提问作者mohammed
相关产品推荐
相关产品推荐

