numpy: применить произвольную функцию к элементу массива - PullRequest
1 голос
/ 21 февраля 2020
import pandas as pd
from ipaddr import IPv4Address

df = pd.DataFrame([[1,'192.168.1.10', '45.7.12.34', 'abc'],[4, '10.10.1.11', '90.90.67.33', 'def'], [77, '52.1.7.90', '67.5.3.5', 'ghi' ], [90, '19.19.90.7', '77.88.99.44', 'xyz']], columns=['A', 'sip', 'dip', 'location'])

addrs = [(int)(IPv4Address(addr)) for addr in df[['sip', 'dip']].values.flatten().tolist()]

Мне интересно, есть ли numpy собственный способ применения функции к каждому элементу массива перед преобразованием в список?

1 Ответ

1 голос
/ 21 февраля 2020

С pandas (поскольку он помечен) вы также можете попробовать series.map с map из ванили python:

[*map(int,df[['sip', 'dip']].stack().map(IPv4Address))]
#or list(map(int,df[['sip', 'dip']].stack().map(IPv4Address)))
#or df[['sip', 'dip']].stack().map(IPv4Address).astype('int64').tolist()

[3232235786,
 755436578,
 168427787,
 1515864865,
 872482650,
 1124401925,
 320035335,
 1297638188]
...