【发布时间】:2021-08-06 23:44:56
【问题描述】:
我有以下系列:
| Num |
|---|
| 54321 |
| NaN |
| 1234 |
| 1325 |
| 92843 |
我只想保留以 1 开头的数字,输出应如下所示:
| Num |
|---|
| 1234 |
| 1325 |
我尝试将数字系列转换为字符串,然后使用 str.startswith('1),但没有成功。
【问题讨论】:
我有以下系列:
| Num |
|---|
| 54321 |
| NaN |
| 1234 |
| 1325 |
| 92843 |
我只想保留以 1 开头的数字,输出应如下所示:
| Num |
|---|
| 1234 |
| 1325 |
我尝试将数字系列转换为字符串,然后使用 str.startswith('1),但没有成功。
【问题讨论】:
您可以通过布尔掩码尝试:
mask=(df['Num'].notna()) & (df['Num'].astype(str).str[0].eq('1'))
#Finally:
df[mask]
#OR
df.loc[mask]
输出:
Num
2 1234.0
3 1325.0
更新:
对于只有当数字中有5位数字时才保留数字掩码变为:
df['Num']=df['Num'].astype(str).str.strip('.0')
mask=(df['Num'].ne('nan') & df['Num'].str[0].eq('1')) & df['Num'].str.len().eq(5)
【讨论】: