【问题标题】:How to use assign function with respect to value created by melt function?如何针对由 melt 函数创建的值使用 assign 函数?
【发布时间】:2019-12-16 18:53:27
【问题描述】:

我正在学习 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)
)

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

我知道我可以这样做:

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

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

高级问候。

【问题讨论】:

标签: python r pandas dataframe tidyverse


【解决方案1】:

你只需要改变:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2013-03-21
    • 2015-02-13
    • 2021-07-02
    • 2019-03-29
    • 2023-03-03
    • 2023-03-12
    相关资源
    最近更新 更多