Python 为什么我们需要在api的最后一个示例中使用lambda函数;pandas.DataFrame.iloc";?

Python 为什么我们需要在api的最后一个示例中使用lambda函数;pandas.DataFrame.iloc";?,python,pandas,Python,Pandas,我们可以在Click中看到最后一个示例 我练习它,认为我们可以放弃“lambda df:”。我能理解lambda函数。但是,“lambda df:”这里有什么有用的吗?您可以检查: .loc、.iloc以及[]索引可以接受可调用的索引器。可调用函数必须是一个具有一个参数(调用序列、数据帧或面板)的函数,并返回用于索引的有效输出 所以需要调用select的函数: np.random.seed(2019) df1 = pd.DataFrame(np.random.randn(6, 4),

我们可以在Click中看到最后一个示例

我练习它,认为我们可以放弃“lambda df:”。我能理解lambda函数。但是,“lambda df:”这里有什么有用的吗?

您可以检查:

.loc.iloc以及[]索引可以接受可调用的索引器。可调用函数必须是一个具有一个参数(调用序列、数据帧或面板)的函数,并返回用于索引的有效输出

所以需要调用select的函数:

np.random.seed(2019)

df1 = pd.DataFrame(np.random.randn(6, 4),
                   index=list('abcdef'),
                   columns=list('ABCD'))
print (df1)
          A         B         C         D
a -0.217679  0.821455  1.481278  1.331864
b -0.361865  0.685609  0.573761  0.287728
c -0.235634  0.953490 -1.689625 -0.344943
d  0.016905 -0.514984  0.244509 -0.189313
e  2.672172  0.464802  0.845930 -0.503542
f -0.963336  0.064969 -3.205040  1.054969


嗯……使用callable似乎只是一种习惯,而且它的多功能性更强。谢谢大家!@WilliamSkyrme-这是一项功能,但是否使用仍取决于您。在我看来,没有必要使用它,但有时代码应该是一行,如果使用它。但如果对大多数人来说更具可读性,则不确定。
np.random.seed(2019)

df1 = pd.DataFrame(np.random.randn(6, 4),
                   index=list('abcdef'),
                   columns=list('ABCD'))
print (df1)
          A         B         C         D
a -0.217679  0.821455  1.481278  1.331864
b -0.361865  0.685609  0.573761  0.287728
c -0.235634  0.953490 -1.689625 -0.344943
d  0.016905 -0.514984  0.244509 -0.189313
e  2.672172  0.464802  0.845930 -0.503542
f -0.963336  0.064969 -3.205040  1.054969
print (df1.iloc[:, lambda df1: [0, 2]])
          A         C
a -0.217679  1.481278
b -0.361865  0.573761
c -0.235634 -1.689625
d  0.016905  0.244509
e  2.672172  0.845930
f -0.963336 -3.205040

def f(df):
    return [0, 2]

print (df1.iloc[:, f])
          A         C
a -0.217679  1.481278
b -0.361865  0.573761
c -0.235634 -1.689625
d  0.016905  0.244509
e  2.672172  0.845930
f -0.963336 -3.205040