python - 拆分为多个以逗号分隔的列值

标签 python pandas split

我有以下数据集

Chr     Position       Name      AD                                 
1       866511          A       13,21
1       881627          A       28,33
2       1599812         B       67,25 

我需要将 AD 列拆分为三列[REF、ALT1、ALT2]。 当 AD 的每一行只有两个值时,我仍然需要用 NaN 值填充 ALT2 列。

如果 AD 包含具有三个值的行,则以下代码有效

df['REF'], df['ALT1'], df['ALT2'] = df['AD'].str.split(',', 2).str

但是,在某些情况下,对于每一行,数据集在 AD 列中仅包含两个值,当我运行同一行时,我收到以下错误消息:

ValueError:没有足够的值来解包(预期为 3 个,实际为 2)

在这种情况下,我仍然希望保留第三列 ALT2 并用 NaN 值填充它。有什么建议吗?谢谢任何愿意提供帮助的人。

最佳答案

添加额外的','

df['REF'], df['ALT1'], df['ALT2'] = zip(*df.AD.add(',').str.split(',').str[:3])

df

   Chr  Position Name        AD REF ALT1 ALT2
0    1    866511    A     13,21  13   21     
1    1    881627    A  28,33,31  28   33   31
2    2   1599812    B     67,25  67   25     

或者不改变df

df.assign(**dict(zip('REF ALT1 ALT2'.split(), zip(*df.AD.add(',').str.split(',').str[:3]))))

   Chr  Position Name        AD REF ALT1 ALT2
0    1    866511    A     13,21  13   21     
1    1    881627    A  28,33,31  28   33   31
2    2   1599812    B     67,25  67   25     

关于python - 拆分为多个以逗号分隔的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56758262/

相关文章:

python - 拆分输出数据文本文件,其中段落和表格混合在一起

python - 当我从 multiprocessing.Pool 调用 apply_async 时,为什么会抛出 "' module' object has no attribute XXX"错误?

python - 将值写入python中 Pandas 工作表中的特定单元格

Python - pandas df 行到列标题的列表中的字符串以及计数作为值

python - Matplotlib 简单案例内存泄漏与 Pandas

python - 在 Python 中拆分一个字符串并从列表中提取几个字段

python - 如何删除构建产品

python - 在 Python 字符串中的最后一个分隔符上拆分?

python - 从不可下标的可迭代对象中获取第 n 个元素的更好方法

javascript - 将路径字符串从 unc 转换为 uri,在 Google Apps 脚本中用反斜杠替换斜杠