如何将用户输入作为一种方法传递?

how to pass user input as a method?

我正在尝试提示用户在 pandas 数据框中输入列名称,然后使用该输入显示有关该列的信息。
我试过的代码:

df = #initializing dataframe
user_input = input('enter column name')
print(df.user_input.describe())

但我得到了错误:

df has no attribute user_input

假设用户输入实际上是有效的列名,我如何以这种方式使用输入?

您还可以使用 df[] 访问列。尝试:

df[user_input].describe()

另一种方法是使用 getattr():

getattr(df, user_input).describe()

我认为这很“不自然”。

如果

pandas 符合 python 的语法规则并且不干扰对象上的现有属性,您可以将其查找为属性引用。在您的情况下,pandas 会查找字面上名为“user_input”的列。

查找列的更通用的方法是使用索引。它没有相同的约束。所以,

f = #initializing dataframe
user_input = input('enter column name')
print(df[user_input].describe())

现在pandas将使用用户输入的字符串来查找列。

编程的一个规则[1] 是做事应该只有一种“正确的方法”。通常 pandas 或 python 显然不是这种情况。但是组织可以定义他们认为“正确”的东西。由于列的属性查找仅在某些时候有效,是否应该使用它?有争议!

[1]: 代码比实际规则更多'guidelines'。 -Hector Barbossa,Black Perl 船长。