我有两个数据框:
solar_part = pd.DataFrame(
{'pool': 1,
'orig': 635.1}, index = [0]
)
solar_aod = pd.DataFrame(
{'pool': [1,1,1,1],
'MoP': [1,2,3,4],
'prin': [113.1, 115.3, 456.6, 234.1]}
)
然后,我通过pipeline将它们合并在一起,并尝试转换/赋值给新的变量:
solar_p = (
solar_aod
.merge(solar_part, on='pool', how='left')
.assign(remn=['prin'] / ['orig'])
)
在这个赋值操作(我试过使用transform也同样遇到问题)中,出现了TypeError: unsupported operand type(s) for /: 'list' and 'list'
错误,我猜这是由于括号内的表达式导致的。仅使用引号也会得到同样的错误,但错误类型会变为str
而不是list
。如果不包含assign/transform函数,而是直接“长格式”地执行solar_p.prin / solar_p.orig * 100
也可以正常工作,但我还有更多的计算需要进行,因此我希望代码尽可能简洁。请问如何在pipeline中的merge之后实现这种转换/赋值操作?