Pandas DataFrame中explode无法拆分col4列的问题求助
解决DataFrame中col4列的拆分(Explode)问题
你的col4列存储的是逗号加空格分隔的字符串,而非列表类型,这是导致之前方法失效的核心原因。以下是正确的处理步骤:
正确代码实现
- 先将
col4列按,(逗号+空格)分割为列表:
df['col4'] = df['col4'].str.split(', ')
- 仅对
col4列执行explode操作,其他列保留原有值:
df = df.explode('col4').reset_index(drop=True)
执行后即可得到你期望的输出:
col1 col2 col3 col4 0 HP:0005709 ['HP:0001770'] Toe syndactyly SNOMEDCT_US:32113001 1 HP:0005709 ['HP:0001770'] Toe syndactyly C0265660 2 HP:0005709 ['HP:0001780'] Abnormality of toe C2674738 3 EFO:0009136 ['HP:0001507'] Growth abnormality C0262361
之前方法失效的原因
- 方法1直接使用
df.explode('col4'):explode仅对列表、元组等可迭代类型生效,而你的col4是普通字符串,因此无效果。 - 方法2中
set_index(['col2']).apply(pd.Series.explode):对整个DataFrame执行explode会同时拆分col2(因为col2本身是列表),不符合你只拆分col4的需求。 - 方法3使用
ast.literal_eval:col4的内容并非合法Python字面量(比如第一个值是普通字符串,而非带方括号的列表格式),因此无法被正确解析。
内容的提问来源于stack exchange,提问作者rshar
相关产品推荐
相关产品推荐

