假设我有一个包含以下信息的数据框:
Name Points String John 24 FTS8500001A Richard 35 FTS6700001B John 29 FTS2500001A Richard 35 FTS3800001B John 34 FTS4500001A
以下是使用上面的示例获取DataFrame的方法:
import pandas as pd
keys = ('Name', 'Points', 'String')
names = pd.Series(('John', 'Richard', 'John', 'Richard', 'John'))
ages = pd.Series((24,35,29,35,34))
strings = pd.Series(('FTS8500001A','FTS6700001B','FTS2500001A','FTS3800001B','FTS4500001A'))
df = pd.concat((names, ages, strings), axis=1, keys=keys)
Run Code Online (Sandbox Code Playgroud)
我想选择符合以下条件的每一行:Name = Richard And Points = 35.对于这样的行,我想读取String列的第4个和第5个字符(FTS之后的两个数字).
我想要的输出是数字67和38.
我已经尝试了几种方法来实现它,但结果为零.你能帮忙吗?
非常感谢你.
爱德华多
EdC*_*ica 11
使用布尔掩码过滤你的df,然后调用str并切片字符串:
In [77]:
df.loc[(df['Name'] == 'Richard') & (df['Points']==35),'String'].str[3:5]
Out[77]:
1 67
3 38
Name: String, dtype: object
Run Code Online (Sandbox Code Playgroud)
您可以根据标准对其进行掩码,然后使用pandas字符串方法
mask_richard = df.Name == 'Richard'
mask_points = df.Points == 35
df[mask_richard & mask_points].String.str[3:5]
1 67
3 38
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20951 次 |
| 最近记录: |