下面是Pandas多个条件中提取行的攻略。
1. 选择多行数据
通常,我们可以使用loc或iloc来选择某一行或某些行的数据,如:
df.loc[3] # 选择第3行数据
df.iloc[[0, 2]] # 选择第1行和第3行的数据
但是,如果我们需要选择多个条件下的行数据时,可以使用多个逻辑操作符(例如&, |, ~),并放置在括号中,比如:
df.loc[(df["A"] > 1) & (df["B"] == "a")] # 选择A列大于1且B列等于"a"的行数据
df.loc[(df["A"] > 1) | (df["B"] == "a")] # 选择A列大于1或B列等于"a"的行数据
df.loc[(df["A"] > 1) & ~(df["B"] == "a")] # 选择A列大于1且B列不等于"a"的行数据
其中,&表示and,|表示or,~表示not.
2. 示例说明
为了更好地理解这个过程,我们可以通过两个示例进行说明。
示例一
首先,我们创建一个包含三列的DataFrame:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': ['a', 'b', 'c', 'd', 'e'],
'C': [0.1, 0.2, 0.3, 0.4, 0.5]
})
上面的代码创建了一个包含三列的DataFrame,其中列A包含整数,列B包含字符串,列C包含浮点数。
现在我们希望选择列A大于2且列B等于'b'的所有行。为了实现这个目标,我们可以使用如下代码:
df.loc[(df['A'] > 2) & (df['B'] == 'b')]
这将选择所有行,其中列A大于2且列B等于“b”。
示例二
假设现在我们有一个更复杂的数据集,其中包含更多的列和行。我们从这里下载并加载TED演讲数据集:
import pandas as pd
url = 'https://raw.githubusercontent.com/justmarkham/pandas-videos/master/data/ted.csv'
df = pd.read_csv(url)
由于该数据集比较大,我们只选择其中的前5行来演示如何使用多个条件选择行:
df.iloc[:5,:]
运行结果如下:
comments duration ... url views
0.0 4553 1164 ... https://www.ted.com/talks/ken_robinson_says... 47227110
1.0 265 977 ... https://www.ted.com/talks/al_gore_on_avertin... 3200520
2.0 124 1286 ... https://www.ted.com/talks/david_pogue_says_s... 1636292
3.0 200 1116 ... https://www.ted.com/talks/majora_carter_s_tal... 1697550
4.0 593 1190 ... https://www.ted.com/talks/hans_rosling_shows_... 12005869
[5 rows x 17 columns]
现在,假设我们想选择那些演讲时长大于20分钟且观看次数超过500万次的演讲,我们可以通过如下代码来实现:
df.loc[(df['duration'] > 1200) & (df['views'] > 5000000)]
结果将只包含那些时长大于20分钟且观看次数超过500万次的演讲数据。
以上就是Pandas多个条件中提取行的完整攻略,希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas多个条件(AND,OR,NOT)中提取行 - Python技术站