df[df['col a']] 和 df['col a']] 之间的区别?



我是一个编码新手,想要真正理解它,我必须真正掌握概念。

生活质量编辑:

为什么我们做df[df['col a']] == x?而不是df['col a'] == x?什么时候进行搜索?我明白,在第二个表达式中,我将查看等于X的列名,但我想知道将其添加为列表(df[])对代码

有什么作用我很想知道这两者之间的区别,以及当我将列嵌套到列表中时实际在做什么。

任何帮助都是感激的,非常感谢!

一般情况下,df[index]根据索引从数据帧中选择切片。

Pandas支持几种不同的索引方法。你问题中的表达把两个词连在一起。首先,内部索引df['col_a']选择列col_a中的所有值。这些值在布尔表达式中求值,该表达式返回一个"掩码"的序列。在列中的值满足条件时为True,在其他地方为False。然后,外部部分使用布尔索引选择整个数据框中满足此条件的所有行。

的例子:

df = pd.DataFrame({'column1': [0, 1, 2, 3, 4], 'column2': ['x', 'x', 'x', 'y', 'y']})
[In] df
[Out]
column1 column2
0       a       x
1       b       x
2       c       x
3       d       y
4       e       y

选择单列:

[In] df['column2']
[Out] 
0    x
1    x
2    x
3    y
4    y
Name: column2, dtype: object

创建掩码:

[In] df['column2'] == 'x'
[Out]
0     True
1     True
2     True
3    False
4    False
Name: column2, dtype: bool

选择column2列中所有值为x的行:

[In] df[df['column2'] == 'x']
[Out]
column1 column2
0       a       x
1       b       x
2       c       x

所以我们使用df[df['col a']== x]而不仅仅是df['col a'] == x,因为为了优化数据帧本身,你本质上告诉df['col a'] == x数据帧,如果满足条件,你想要一个true为false的bool(你可以在df上尝试这个,并且会看到,当你不把它放在df[]中时,它只会将df['col a'] == x列为true和false的列表)。所以熊猫首先会说"What asked"?然后它会说"你问的是X " "根据你的问题,这里有一系列的真/假"最后"你要求该系列的所有True值这里是数据帧它只反映True ">

这是否有助于弄清楚它在做什么?基本上就是熊猫想要尽可能的优化。此外,当你开始学习越来越多,你可以添加多个参数df[(df['col a'] == x) & (df['col b'] == y)],这将很难编写和保持在一起,如果你只使用df['col a']搜索

最新更新