pandas 如何使用 Series 对象对 Data Frame 进行切片?
How does pandas use a Series object to slice a Data Frame?
我有一个 6x4 pandas 数据框,其中填充了来自标准正态分布的随机数(索引是数字 0 到 5,列 'A'、'B'、'C', 和 'D'.
import pandas as pd
df = pd.DataFrame(np.random.randn(6,4), index=[0,1,2,3,4,5], columns=list('ABCD))
看起来像这样:
我添加了一个包含一些字符串的列:
df['E'] = ['one', 'one', 'two', 'three', 'four', 'three']
现在数据框看起来像这样:
引用E列,我只能获取关键字'one'或'four':
的行
x = df['E'].isin(['one','four'])
df[x]
我明白了:
但是当我检查 x 的类型时,它是一个 pandas 系列 (pandas.core.series.Series)。
我不明白 Series 是如何解释为数据帧切片的?我想在某种程度上了解基本水平。它如何知道 return 的行数?如果我打印 x,它是一个充满布尔值的系列。
这是布尔索引。简单理解,布尔值与数据框对齐。只要布尔级数为真,就选择该行。否则 (false),该行将被删除。例如,x 在索引 0、1、4 处为真,因此具有这些索引的数据框行将被拾取,即您的案例中的第一行、第二行和第五行。
我有一个 6x4 pandas 数据框,其中填充了来自标准正态分布的随机数(索引是数字 0 到 5,列 'A'、'B'、'C', 和 'D'.
import pandas as pd
df = pd.DataFrame(np.random.randn(6,4), index=[0,1,2,3,4,5], columns=list('ABCD))
看起来像这样:
我添加了一个包含一些字符串的列:
df['E'] = ['one', 'one', 'two', 'three', 'four', 'three']
现在数据框看起来像这样:
引用E列,我只能获取关键字'one'或'four':
的行x = df['E'].isin(['one','four'])
df[x]
我明白了:
但是当我检查 x 的类型时,它是一个 pandas 系列 (pandas.core.series.Series)。
我不明白 Series 是如何解释为数据帧切片的?我想在某种程度上了解基本水平。它如何知道 return 的行数?如果我打印 x,它是一个充满布尔值的系列。
这是布尔索引。简单理解,布尔值与数据框对齐。只要布尔级数为真,就选择该行。否则 (false),该行将被删除。例如,x 在索引 0、1、4 处为真,因此具有这些索引的数据框行将被拾取,即您的案例中的第一行、第二行和第五行。