Вот примерный фрейм данных:

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

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

Я хотел бы извлечь только те строки, где целое число, состоящее из 3-го и 4-го символа в столбце num, делится, например, на 2. Поэтому мне нужно проверить, если df['num'][2:4] % 2

Я получил это далеко, но не могу понять, как преобразовать его в целое число:

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

1
Raksha 13 Апр 2019 в 01:37

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
2
cs95 12 Апр 2019 в 22:42
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"])
0
sentence 12 Апр 2019 в 22:41