考虑以下示例,该示例从pyjanitor包中导入其他 Pandas 方法。
import pandas as pd
import janitor
df = pd.DataFrame({
'Column One': [1, 2, 3],
'Column-Two': [4, 5, 6],
'Column@Three': [7, 8, 9],
})
df_cleaned = df.clean_names()
print(df_cleaned)
#> column_one column_two column@three
#> 0 1 4 7
#> 1 2 5 8
#> 2 3 6 9
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以更透明/明确地从Python包、模块或其他来源导入方法(以知道哪个方法来自哪个包)和/或有选择地(仅导入感兴趣的方法,例如,仅导入但不导入剩余的方法)那些)?.clean_names()
注意:我不想将方法作为函数导入并将其用作函数。我想控制导入哪些方法。
pyjanitor 是非常不寻常的。在 Python 中向其他地方定义的类添加方法在技术上是合法的,但几乎没有人这样做。大多数时候,您可以放心地假设类的任何方法都来自定义该类的模块,或者从父类继承。
不可能有选择地仅导入对象的某些方法。无论什么代码正在查看一个对象,它都具有相同的方法。(如果像 pyjanitor 这样的模块添加更多方法,它可能会突然增加更多方法,但如果是这样,这些新方法将可供该点之后访问该对象的任何代码使用。)