【问题标题】:Assign operator method chaining str.join()分配运算符方法链接 str.join()
【发布时间】:2023-01-13 03:38:26
【问题描述】:

我有以下方法链接代码并想创建一个新列。但是在执行以下操作时出现错误。

(
     pd.pivot(test, index = ['file_path'], columns = 'year', values = 'file')
     .fillna(0)
     .astype(int)
     .reset_index()
     .assign(hierarchy = file_path.str[1:-1].str.join(' > '))
)

在分配方法之前,数据框看起来像这样:

file_path       2017  2018  2019  2020
S:\Test\A       0     0     1     2
S:\Test\A\B     1     0     1     3
S:\Test\A\C     3     1     1     0
S:\Test\B\A     1     0     0     1
S:\Test\B\B     1     0     0     1

错误是:未定义名称“file_path”。

file_path 存在于数据框中,但我没有正确调用它。使用分配基于另一个列创建新列的正确方法是什么?

【问题讨论】:

    标签: python pandas string method-chaining


    【解决方案1】:

    你可以传递一个接受数据帧的可调用对象观点:

    .assign(hierarchy=lambda fr: fr["file_path"].str[1:-1].str.join(" > "))
    

    这样 fr 将是当时修改过的数据框,您可以通过它访问列“file_path”。

    【讨论】:

      猜你喜欢
      • 2014-09-26
      • 2014-07-01
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 2021-08-16
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多