[英]Boolean indexing in pandas dataframes
我正在尝试将 boolean 索引应用于 pandas DataFrame。
nm - 存储玩家的名字
ag - 存储玩家年龄
sc - 存储分数
capt - 存储 boolean 索引值
import pandas as pd
nm=pd.Series(['p1','p2', 'p3', 'p4'])
ag=pd.Series([12,17,14, 19])
sc=pd.Series([120, 130, 150, 100])
capt=[True, False, True, True]
Cricket=pd.DataFrame({"Name":nm,"Age":ag ,"Score":sc}, index=capt)
print(Cricket)
Output:
Name Age Score
True NaN NaN NaN
False NaN NaN NaN
True NaN NaN NaN
True NaN NaN NaN
每当我运行上面的代码时,我都会得到一个 DataFrame 填充了 NaN 值。 这似乎工作的唯一情况是当 capt 没有重复元素时。
即当capt=[False, True]
(并且为 nm、ag 和 sc 给出了合理的值)时,此代码按预期工作。
我正在运行python 3.8.5、pandas 1.1.1这是不推荐使用的功能吗?
所需的 output:
Name Age Score
True p1 12 120
False p2 17 130
True p3 14 150
True p4 19 100
为每个 Series 设置索引值,以避免每个 Series 的默认 RangeIndex 与capt
的新索引值不匹配:
capt=[True, False, True, True]
nm=pd.Series(['p1','p2', 'p3', 'p4'], index=capt)
ag=pd.Series([12,17,14, 19], index=capt)
sc=pd.Series([120, 130, 150, 100], index=capt)
Cricket=pd.DataFrame({"Name":nm,"Age":ag ,"Score":sc})
print(Cricket)
Name Age Score
True p1 12 120
False p2 17 130
True p3 14 150
True p4 19 100
详情:
print(pd.Series(['p1','p2', 'p3', 'p4']))
0 p1
1 p2
2 p3
3 p4
dtype: object
print(pd.Series(['p1','p2', 'p3', 'p4'], index=capt))
True p1
False p2
True p3
True p4
dtype: object
capt=[True, False, True, True]
nm=pd.Series(['p1','p2', 'p3', 'p4'])
ag=pd.Series([12,17,14, 19])
sc=pd.Series([120, 130, 150, 100])
Cricket=pd.DataFrame({"Name":nm,"Age":ag ,"Score":sc})
print(Cricket)
Name Age Score
0 p1 12 120
1 p2 17 130
2 p3 14 150
3 p4 19 100
print (Cricket[capt])
Name Age Score
0 p1 12 120
2 p3 14 150
3 p4 19 100
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.