首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在熊猫中寻找与整数等价的起始点

在熊猫中寻找与整数等价的起始点
EN

Stack Overflow用户
提问于 2020-06-17 21:54:01
回答 3查看 1.5K关注 0票数 1

我有一个整数列。所有行都有9位数字,第一行要么以5开头,要么以7开头。我试图对那些只以7开头的行进行筛选。对于整数d类型是否有.str.startswith等效?还是需要将其转换为字符串并返回到整数?

代码语言:javascript
运行
复制
df["Case #"].str.startswith(7)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-17 21:57:07

如果它们都是9位数,则只需使用数字比较:

代码语言:javascript
运行
复制
(df["Case #"].between(700000000, 799999999) 
 |  df["Case #"].between(500000000, 599999999))
票数 1
EN

Stack Overflow用户

发布于 2020-06-17 22:04:42

在这里剥猫皮的方法很多:

代码语言:javascript
运行
复制
# fake
np.random.seed([3, 14])
s = pd.Series((np.random.choice(8, 10) + 1) * 1e8, name='Case', dtype='int')
s      

0    100000000
1    800000000
2    500000000
3    200000000
4    800000000
5    500000000
6    400000000
7    500000000
8    600000000
9    700000000
Name: Case, dtype: int64

使用算术和isin检查,因为所有数字都有相同的数字:

代码语言:javascript
运行
复制
# (df['case'] // 1e8).astype(int).isin([5, 7]) 
(s // 1e8).astype(int).isin([5, 7]) 

0    False
1    False
2     True
3    False
4    False
5     True
6    False
7     True
8    False
9     True
Name: Case, dtype: bool

这要慢得多。转换为字符串并检查第一个数字。

代码语言:javascript
运行
复制
# Here, comparison is with strings, not integers. 
s.astype(str).str[0].isin(['5', '7'])

0    False
1    False
2     True
3    False
4    False
5     True
6    False
7     True
8    False
9     True
Name: Case, dtype: bool

提醒:很多,很多,慢一些。

票数 1
EN

Stack Overflow用户

发布于 2020-06-17 22:03:06

就这么做吧:

代码语言:javascript
运行
复制
df = df[(df["Case #"].astype(str).str.startswith('7')) | (df["Case #"].astype(str).str.startswith('5'))]

代码语言:javascript
运行
复制
df = df[df["Case #"].astype(str).str.contains(r'^7|^5')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62438994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档