|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
hi,小鱼c您好,下面是我练习插入的DataFrame来进行布尔索引:
- import pandas as pd
- import numpy as np
- np.random.seed(0)
- _iterator = zip(["id", "name", "score", "age"],
- [[i for i in range(1, 8)],
- ["bob", "fishc", "allen", "xiaoming", "xiaobai", "xiaoma", "xiaoli"],
- [i for i in np.random.randint(50, 101, 7)],
- [i for i in np.random.randint(25, 35, 7)]
- ])
- df = pd.DataFrame({k: v for k, v in _iterator}, index=np.arange(1, 8, 1))
复制代码
- 方式1:
- print(df['score']>70)
- print(type(df['score']>70))
- print(type(df['score']))
- print(type(df))
- print(df[df['score']>70])
- print(df['score'][df['score']>70])
- print("\n------两种方式进行比较-------\n")
- 方式2:
- print(df[['score']]>70)
- print(type(df[['score']]>70))
- print(type(df[['score']]))
- print(type(df))
- print(df[df[['score']]>70])
- print(df[['score']][df[['score']]>70])
复制代码
返回结果如下:
1 True
2 True
3 False
4 False
5 False
6 True
7 False
Name: score, dtype: bool
<class 'pandas.core.series.Series'>
<class 'pandas.core.series.Series'>
<class 'pandas.core.frame.DataFrame'>
id name score age
1 1 bob 94 28
2 2 fishc 97 30
6 6 xiaoma 89 31
1 94
2 97
6 89
Name: score, dtype: int64
------两种方式进行比较-------
score
1 True
2 True
3 False
4 False
5 False
6 True
7 False
<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>
<class 'pandas.core.frame.DataFrame'>
id name score age
1 NaN NaN 94.0 NaN
2 NaN NaN 97.0 NaN
3 NaN NaN NaN NaN
4 NaN NaN NaN NaN
5 NaN NaN NaN NaN
6 NaN NaN 89.0 NaN
7 NaN NaN NaN NaN
score
1 94.0
2 97.0
3 NaN
4 NaN
5 NaN
6 89.0
7 NaN
问题:为什么方式2的结果是这样的,虽然说方式一的条件筛选是Series类型,为什么方式2的条件筛选变成DataFrame就无法筛选了,而且还都是None值。思考很久,辛苦小鱼c解答。
|
|