Не применять одну и ту же функцию ко всем строкам столбца Pandas? - PullRequest
0 голосов
/ 10 мая 2018

Я хочу извлечь первые 3 из значений столбца панд без выполнения цикла.

Итак,

df['myCol'][3]
5475

Чтобы извлечь первые 3 цифры, я делаю:

int(str(df['myCol'][3])[:2])
547

Я хочу применить ко всем одинаковую процедуру ко всему столбцу. Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 10 мая 2018

при условии, что у вас есть числовой столбец:

In [189]: df
Out[189]:
    myCol
0    5475
1   99999
2  123456

In [190]: df.dtypes
Out[190]:
myCol    int64
dtype: object

In [191]: df['myCol'] // 10**(np.log10(df.myCol).astype(int) - 2)
Out[191]:
0    547
1    999
2    123
Name: myCol, dtype: int64
0 голосов
/ 10 мая 2018

Если вам нравится играть с format, этот также делает свою работу:

df['myCol'].map(lambda x: '{:.3}'.format(str(x)))
0 голосов
/ 10 мая 2018

Я думаю, что нужно выбрать путем индексации с помощью str[] и затем привести к integer s:

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

Если входные значения являются целыми числами, сначала приведем к string s:

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