【问题标题】:Chain method calls with for loop使用 for 循环调用链式方法
【发布时间】:2022-01-18 10:07:34
【问题描述】:

我有一个名为 Bar 的类对象,我有一个独特的 pd.DataFrame 作为属性。我想通过循环调用每个 DataFrame 的列。然而,我得到的是字符串本身而不是调用结果。

我该如何解决这个问题? &我在这里缺少什么概念?谢谢。

l=['chocolate', 'vanilla', 'strawberry']

def m(s):
    xd='Bar.'+s+'.columns.str[:5]'
    return xd
 
for s in l:
    print (m(s))

返回:

bar.chocolate.columns.str[:5]
bar.vanilla.columns.str[:5]
bar.strawberry.columns.str[:5]

【问题讨论】:

  • 您正在创建一个字符串,不知道为什么您希望这会神奇地成为一个调用结果。您可能希望在函数 m: return getattr(Bar, s).columns.str[:5] 中执行此操作。

标签: python for-loop method-chaining


【解决方案1】:

创建字符串不会访问属性。您需要像这样使用getattr() 实际获取它们:

l=['chocolate', 'vanilla', 'strawberry']

def m(df, attribute):
    return getattr(df, attribute).columns.str[:5]

for s in l:
    print (m(Bar, s))

【讨论】:

    猜你喜欢
    • 2019-06-16
    • 2016-02-25
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多