筛选时从pandas数据帧获取子字符串

2024-09-22 10:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个包含以下信息的数据帧:

Name    Points          String
John        24     FTS8500001A
Richard     35     FTS6700001B
John        29     FTS2500001A
Richard     35     FTS3800001B
John        34     FTS4500001A

下面是使用上述示例获取数据帧的方法:

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)

我想选择符合以下条件的每一行:Name=Richard,Points=35。对于这样的行,我想读取字符串列的第4和第5个字符(FTS后面的两个数字)。

我想要的输出是数字67和38。

我尝试了几种方法来实现它,但没有任何结果。你能帮忙吗?

非常感谢。
爱德华多


Tags: 方法namerichardstringnameskeysjohnpoints
2条回答

使用布尔掩码筛选df,然后调用^{}并分割字符串:

In [77]:
df.loc[(df['Name'] == 'Richard') & (df['Points']==35),'String'].str[3:5]

Out[77]:
1    67
3    38
Name: String, dtype: object

Pandas字符串方法

您可以根据您的条件对其进行屏蔽,然后使用pandas string methods

mask_richard = df.Name == 'Richard'
mask_points = df.Points == 35
df[mask_richard & mask_points].String.str[3:5]

1    67
3    38

相关问题 更多 >