如何在Pandas中替换主DataFrame列内的嵌套DataFrame条目?
问题分析与解决方案
错误原因
你的主DataFrame a 是仅包含1行的结构,而c是一个5行3列的DataFrame。当执行a.B = c时,Pandas会默认尝试将c的行/列与a的行进行对齐匹配,但两者长度(1行 vs 5行)不匹配,因此抛出ValueError: Columns must be same length as key。
而你之前初始化a.B时用[pd.DataFrame(...)]能成功,是因为你把子DataFrame包装成了长度为1的列表,刚好和a的行数(1行)匹配,Pandas会将整个子DataFrame作为单个元素存入a的B列中。
可行解决方案
方案1:保持初始化时的列表包裹赋值
直接将c包装成列表,和之前的赋值逻辑一致:
a['B'] = [c] # 或者用属性写法 a.B = [c]
方案2:用loc精准定位赋值
通过loc直接定位到a的唯一行,给B列赋值:
a.loc[0, 'B'] = c
验证效果
赋值完成后,你可以通过以下代码查看B列的内容:
print(a.B.iloc[0])
输出就是c的完整DataFrame内容。
内容的提问来源于stack exchange,提问作者MSchon
相关产品推荐
相关产品推荐

