我是一个编码新手,想要真正理解它,我必须真正掌握概念。
生活质量编辑:为什么我们做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']
搜索