首页 > 解决方案 > 如何针对由 melt 函数创建的值使用 assign 函数?

问题描述

我正在学习 Python 的一些基础知识,并且正在尝试模拟我在 R 中编写的简单代码,但是当我在新变量上应用函数时出现问题。

这是我在 R 中写的:

df1 <- df %>%
   select(var1,,var2,var4,var5,var6) %>%
   gather(var4,var5,var6,key = "key_name",value = "value_name") %>%
   mutate(value_name=value_name*1000)

这就是我用 Python 写的:

df1= (df
    .filter(['var1','var2','var3','var4','var5','var6'])
    .melt(id_vars=['var1','var2'])
    .assign(value = df['value']*1000)
)

这给了我一个错误,我知道这是因为当我尝试使用.assignafter时,数据框上不存在.melt该变量。'value'df

我知道我可以做类似的事情:

df1= (df
    .filter(['var1','var2','var3','var4','var5','var6'])
    .melt(id_vars=['var1','var2'])
)
df1=df1.assign(value = df['value']*1000)

但我希望一个接一个地拥有所有功能,而无需多次定义我的数据框df1。如果不可能做这样的事情,我想知道为什么。

高级问候。

标签: pythonrpandasdataframetidyverse

解决方案


你只需要改变:

assign(value = df['value']*1000)

assign(value=lambda df: df['value']*1000)

推荐阅读