Python DataFrame如何将每行的类列表取值转换为对应纯值?
实现方案
情况1:colA中存储的是真实Python列表对象
直接调用join方法拼接列表元素即可,代码如下:
import pandas as pd # 示例构造数据 df = pd.DataFrame({ 'colA': [[0], [3, 1], [3, 1, 2], [3, 1]] }) # 转换逻辑:先把列表内的所有元素转成字符串,再用逗号拼接 df['desired'] = df['colA'].apply(lambda x: ','.join(map(str, x)))
运行后即可得到需要的desired列结果。
情况2:colA中存储的是字符串格式的类列表(比如"[3, 1]"这种字符串)
需要先把字符串转成真实的列表对象,再做拼接,这里用ast.literal_eval做安全的类型转换:
import pandas as pd import ast # 示例构造数据 df = pd.DataFrame({ 'colA': ['[0]', '[3, 1]', '[3, 1, 2]', '[3, 1]'] }) # 转换逻辑:先转字符串为列表,再拼接元素 df['desired'] = df['colA'].apply(lambda x: ','.join(map(str, ast.literal_eval(x))))
补充说明
不推荐直接对列做字符串切片(比如df['colA'].astype(str).str[1:-1])的方式处理,因为如果列表元素之间存在空格,转换后的结果会自带多余空格,和预期输出不符。以上两种方案不管原列表元素之间有没有空格,都能得到无多余分隔的逗号拼接结果。
内容的提问来源于stack exchange,提问作者one_random_python_learner
相关产品推荐
相关产品推荐

