【发布时间】:2022-01-01 16:27:41
【问题描述】:
以下 pandas 过滤 DataFrame 的方法有什么区别? (在titanic dataset上)。
df_train['Age'][df_train['Pclass']==1]
df_train[df_train['Pclass']==1]['Age']
【问题讨论】:
-
请提供更多上下文。列表是有序集合,而不是像字典那样的键值存储。您可能会将 Python 列表与其他一些数据结构(如 PANDAS 数据帧)混为一谈。
-
您应该为 pandas 添加一个标签,看来您使用的是 pandas 数据框而不是列表。此外,您正在使用两个过滤器来对数据框进行子集化,这两个过滤器都会产生相同的答案,因为它们的工作方式类似于 A ^ B 与 B ^ A;其中 ^ 表示交点
-
语法类似,但
x[y]是indexing,不一定是列表! (在你的情况下,你可能有一个Pandas DataFrame) -
哦...很抱歉提出一个没有经验的问题。这是第一次使用堆栈溢出......并且您的所有帮助都很有效。非常感谢。
-
@HenryEcker 请恢复您的出色回答。简短的回答是“两行都产生相同的结果。但是出于相同的原因,两者都是不可取的:切片两次(不必要地)产生熊猫副本而不是切片。副本浪费内存并且是一种不好的编码习惯。避免这样做。解决方案:使用
[]/.loc同时从两个维度中选择:df_train[df_train['Pclass']==1, 'Age']