如何将DataFrame单元格中的一部分字符串转换为数字以进行过滤?

时间:2019-04-12 22:37:35

标签: python pandas dataframe

这是一个示例数据框:

df = pd.DataFrame([['A0000x', 'a'],
                    ['B0010x', 'b'],
                    ['C0020x', 'c'],
                    ['D0040x', 'd']])

df.columns = ['num', 'let']

例如,我只想提取num列中由第3和第4个字符组成的整数可被2整除的行。 所以我需要检查df['num'][2:4] % 2

我已经走了这么远,但无法弄清楚如何将其转换为整数:

df.index[df['num'].str[2:4] == '01']

2 个答案:

答案 0 :(得分:2)

使用astype将字符串列转换为int,然后转换为布尔索引。

df['num'].str[2:4].astype(int)

0    0
1    1
2    2
3    4
Name: num, dtype: int64

df[df['num'].str[2:4].astype(int) % 2 == 0]

      num let
0  A0000x   a
2  C0020x   c
3  D0040x   d

答案 1 :(得分:0)

import pandas as pd

df = pd.DataFrame([['A0000x', 'a'],
                    ['B0010x', 'b'],
                    ['C0020x', 'c'],
                    ['D0040x', 'd']])

df.columns = ['num', 'let']

for index, row in df.iterrows():
    if (int(row["num"][2:4]) % 2 ==0):
        print(row["num"])