我有两个dfs
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]}
)
然后我通过管道合并在一起并尝试转换/分配一个新变量
solar_p = (
solar_aod
.merge(solar_part, on = ['pool'], how = 'left')
.assign(remn = ['prin'] / ['orig'])
)
分配(也尝试过转换)给出了
TypeError: unsupported operand type(s) for /: 'list' and 'list'
的错误,我猜这是由包围引起的。仅尝试引号会产生相同的错误,但使用 str
而不是 list
。不包括分配/转换函数,然后通过 solar_p.prin / solar_p.orig * 100
进行“长手”操作也可以,但我还有几个方程式要包括,所以我希望它尽可能简洁。在管道中合并后如何进行转换/分配?
我想你正在寻找
solar_p = (
solar_aod
.merge(solar_part, on = ['pool'], how = 'left')
.assign(remn = lambda df: df['prin'] / df['orig'])
)
文档,
列名是关键字。如果这些值是可调用的,它们将在 DataFrame 上计算并分配给新列。