如何将DataFrame中的列表拆分到多个DataFrame中?
解决方案
要实现把每个单元格的字符串列表拆分成两个DataFrame的需求,你可以利用applymap对DataFrame的每个单元格进行元素提取操作,具体步骤如下:
首先明确核心需求:每个单元格的列表要么长度为1(需要在两个结果DataFrame中保留相同值),要么长度为2(分别提取第1个和第2个元素到两个DataFrame)。
代码实现
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({ 'A': {'a': ['NaN'],'b': ['1.11', '0.00']}, 'B': {'a': ['3.33', '0.22'],'b': ['NaN']}, }) # 生成df1:提取每个列表的第一个元素(保持列表格式) df1 = df.applymap(lambda x: [x[0]]) # 生成df2:提取列表的第二个元素;如果列表只有1个元素,就复用第一个元素 df2 = df.applymap(lambda x: [x[1]] if len(x) > 1 else [x[0]])
结果验证
运行后得到的df1和df2完全符合你的期望:
df1的每个单元格对应原列表的第一个元素df2的每个单元格对应原列表的第二个元素(长度为1的列表则保留原元素)
为什么用applymap?
apply是针对行或列(Series)操作的,而我们需要对每个独立的单元格处理,applymap正好能遍历DataFrame的所有单元格,对每个单元格执行自定义的lambda函数,完美匹配你的场景。
内容的提问来源于stack exchange,提问作者Michiel Karrenbelt
相关产品推荐
相关产品推荐

