如何将Pandas DataFrame单元格内容转换为列表?
解决DataFrame单元格内容转列表的问题
嘿,这事儿好办!我来给你一步步讲清楚怎么把指定Record Type对应的Value转换成整数列表。
首先,先假设你已经用pandas创建了对应的DataFrame,我们先把示例数据构造出来:
import pandas as pd df = pd.DataFrame({ 'Record Type': [100, 200, 300], 'Value': ['1,2,3,4,5', '0,10', '1'] })
接下来有两种常用方法,看你需求选:
方法一:直接定位目标单元格转换
如果你只需要获取Record Type=100对应的列表,直接定位到这个单元格处理就行:
# 先筛选出Record Type为100的行,取出对应的Value字符串 target_value_str = df.loc[df['Record Type'] == 100, 'Value'].iloc[0] # 按逗号分割字符串,再把每个元素转成整数,最后转成列表 list1 = list(map(int, target_value_str.split(','))) print(list1) # 输出结果就是 [1, 2, 3, 4, 5]
这里解释下:df.loc[df['Record Type'] == 100, 'Value']会返回一个只包含目标值的Series,iloc[0]是取出这个Series里的第一个元素(如果你的Record Type是唯一的,这步就没问题);split(',')把字符串按逗号拆成字符串列表,map(int, ...)把每个字符串转成整数,最后用list()转成标准列表。
方法二:批量转换后再取值
如果你之后可能需要用到其他Record Type对应的列表,可以先把整个Value列都转换成列表,再按需取值:
# 给DataFrame新增一列,把每个Value都转成整数列表 df['Value_List'] = df['Value'].apply(lambda x: list(map(int, x.split(',')))) # 再取出Record Type=100对应的列表 list1 = df.loc[df['Record Type'] == 100, 'Value_List'].iloc[0]
这种方法的好处是一次处理完所有数据,之后再获取其他Record Type的列表就很方便啦。
需要注意的是,如果你的DataFrame里Record Type可能有重复值,那你可能需要用tolist()来获取所有匹配的列表,而不是iloc[0]。比如:
# 如果有多个Record Type=100的行,获取所有对应的列表 all_lists = df.loc[df['Record Type'] == 100, 'Value_List'].tolist()
内容的提问来源于stack exchange,提问作者Padfoot123
相关产品推荐
相关产品推荐

