根据pandas中列的值从DataFrame中选择行

根据pandas中列的值从DataFrame中选择行

如何DataFrame根据pandas中某些列的值选择行?

SQL中,我会使用:

SELECT *FROM tableWHERE colume_name = some_value

我试着看看熊猫文档,但没有立即找到答案。


杨__羊羊
浏览 2609回答 3
3回答

MMTTMM

要选择列值等于标量的行some_value,请使用==:df.loc[df['column_name']&nbsp;==&nbsp;some_value]要选择列值在可迭代中的行some_values,请使用isin:df.loc[df['column_name'].isin(some_values)]将多种条件与&:df.loc[(df['column_name']&nbsp;>=&nbsp;A)&nbsp;&&nbsp;(df['column_name']&nbsp;<=&nbsp;B)]请注意括号。由于Python的运算符优先级规则,&绑定比<=和更紧密>=。因此,最后一个例子中的括号是必要的。没有括号df['column_name']&nbsp;>=&nbsp;A&nbsp;&&nbsp;df['column_name']&nbsp;<=&nbsp;B被解析为df['column_name']&nbsp;>=&nbsp;(A&nbsp;&&nbsp;df['column_name'])&nbsp;<=&nbsp;B这导致系列的真值是一个模糊的错误。要选择列值不相等的行&nbsp;some_value,请使用!=:df.loc[df['column_name']&nbsp;!=&nbsp;some_value]isin返回boolean系列,所以要选择行,其值是不是在some_values,否定使用布尔系列~:df.loc[~df['column_name'].isin(some_values)]例如,import pandas as pdimport numpy as npdf = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'B': 'one one two three two two one three'.split(),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'C': np.arange(8), 'D': np.arange(8) * 2})print(df)#&nbsp; &nbsp; &nbsp; A&nbsp; &nbsp; &nbsp; B&nbsp; C&nbsp; &nbsp;D# 0&nbsp; foo&nbsp; &nbsp; one&nbsp; 0&nbsp; &nbsp;0# 1&nbsp; bar&nbsp; &nbsp; one&nbsp; 1&nbsp; &nbsp;2# 2&nbsp; foo&nbsp; &nbsp; two&nbsp; 2&nbsp; &nbsp;4# 3&nbsp; bar&nbsp; three&nbsp; 3&nbsp; &nbsp;6# 4&nbsp; foo&nbsp; &nbsp; two&nbsp; 4&nbsp; &nbsp;8# 5&nbsp; bar&nbsp; &nbsp; two&nbsp; 5&nbsp; 10# 6&nbsp; foo&nbsp; &nbsp; one&nbsp; 6&nbsp; 12# 7&nbsp; foo&nbsp; three&nbsp; 7&nbsp; 14print(df.loc[df['A'] == 'foo'])产量&nbsp; &nbsp; &nbsp;A&nbsp; &nbsp; &nbsp; B&nbsp; C&nbsp; &nbsp;D0&nbsp; foo&nbsp; &nbsp; one&nbsp; 0&nbsp; &nbsp;02&nbsp; foo&nbsp; &nbsp; two&nbsp; 2&nbsp; &nbsp;44&nbsp; foo&nbsp; &nbsp; two&nbsp; 4&nbsp; &nbsp;86&nbsp; foo&nbsp; &nbsp; one&nbsp; 6&nbsp; 127&nbsp; foo&nbsp; three&nbsp; 7&nbsp; 14如果您想要包含多个值,请将它们放在列表中(或者更常见的是,任何可迭代的)并使用isin:print(df.loc[df['B'].isin(['one','three'])])产量&nbsp; &nbsp; &nbsp;A&nbsp; &nbsp; &nbsp; B&nbsp; C&nbsp; &nbsp;D0&nbsp; foo&nbsp; &nbsp; one&nbsp; 0&nbsp; &nbsp;01&nbsp; bar&nbsp; &nbsp; one&nbsp; 1&nbsp; &nbsp;23&nbsp; bar&nbsp; three&nbsp; 3&nbsp; &nbsp;66&nbsp; foo&nbsp; &nbsp; one&nbsp; 6&nbsp; 127&nbsp; foo&nbsp; three&nbsp; 7&nbsp; 14但请注意,如果您希望多次执行此操作,则首先创建索引更有效,然后使用df.loc:df = df.set_index(['B'])print(df.loc['one'])产量&nbsp; &nbsp; &nbsp; &nbsp;A&nbsp; C&nbsp; &nbsp;DB&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;one&nbsp; foo&nbsp; 0&nbsp; &nbsp;0one&nbsp; bar&nbsp; 1&nbsp; &nbsp;2one&nbsp; foo&nbsp; 6&nbsp; 12或者,要包含索引使用的多个值df.index.isin:df.loc[df.index.isin(['one','two'])]产量&nbsp; &nbsp; &nbsp; &nbsp;A&nbsp; C&nbsp; &nbsp;DB&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;one&nbsp; foo&nbsp; 0&nbsp; &nbsp;0one&nbsp; bar&nbsp; 1&nbsp; &nbsp;2two&nbsp; foo&nbsp; 2&nbsp; &nbsp;4two&nbsp; foo&nbsp; 4&nbsp; &nbsp;8two&nbsp; bar&nbsp; 5&nbsp; 10one&nbsp; foo&nbsp; 6&nbsp; 12
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python
MySQL