如何替换Pandas DataFrame单元格值为列表并展开DataFrame
解决方案
要实现你想要的效果,我们可以利用Pandas的loc定位和explode展开功能,几步就能搞定:
首先先构建你给出的示例数据:
import pandas as pd # 初始化DataFrame df = pd.DataFrame({ 'A': ['a', 'd'], 'B': ['b', 'e'], 'C': ['c', 'f'] }) mylist = [1, 2, 3]
接下来执行核心操作:
- 定位到C列值为
'c'的行,把该行的C列值替换成目标列表mylist - 使用
explode方法将列表中的元素拆分成单独的行,同时保留A、B列的对应值
代码如下:
# 替换目标行的C列为列表 df.loc[df['C'] == 'c', 'C'] = df.loc[df['C'] == 'c', 'C'].apply(lambda x: mylist) # 展开列表为多行,重置索引让结果更整洁 df = df.explode('C', ignore_index=True)
执行后你就能得到想要的结果:
A B C 0 a b 1 1 a b 2 2 a b 3 3 d e f
补充说明
如果你的DataFrame中有多行C列值为'c',这个方法同样适用——每一行都会被展开成对应列表长度的行数,完全保留其他列的内容。
内容的提问来源于stack exchange,提问作者Shubzumt
相关产品推荐
相关产品推荐

