如何使用布尔索引对数据帧进行索引?

2024-09-29 01:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我将在pandas开始一个新的实践模块,在那里我们处理数据的索引和过滤。我遇到了一种课程中没有解释的方法链接格式,我想知道是否有人能帮助我理解这一点。该数据集来自《财富》500强公司的上市公司

df = pd.read_csv('f500.csv', index_col = 0)

问题是,我们已经学会了通过将布尔条件传递给数据帧来使用布尔索引,就像这样

motor_bool = df["industry"] == "Motor Vehicles and Parts"
motor_countries = df.loc[motor_bool, "country"]

上面的代码是为了找到那些以“机动车和零部件”为工业的国家。本单元的最后一个练习要求我们

“创建一个系列,industry_usa,包含总部位于美国的公司在行业栏中最常见的两个值的计数。”

答案是

industry_usa = f500["industry"][f500["country"] == "USA"].value_counts().head(2)

我不明白我们怎么能突然背靠背地使用df[col]df[col]?我是不是应该先通过bool条件,然后指定要使用.loc将其分配给哪个列?所使用的链接方法与我们所实践的非常不同

请帮忙。我真的很困惑

一如既往,谢谢你,stack社区


Tags: csv数据方法df链接公司col条件
1条回答
网友
1楼 · 发布于 2024-09-29 01:26:35

我认为最后一个解决方案不是recommended,这里更好的方法是使用类似^{}的第二个解决方案,通过掩码获取列industry,然后获取计数:

industry_usa = f500.loc[f500["country"] == "USA", "industry"].value_counts().head(2)

另一个使用^{}的解决方案:

industry_usa = f500.loc[f500["country"] == "USA", "industry"].nlargest(2)

相关问题 更多 >