Определение, содержит ли столбец Pandas, содержащий массив, определенные значения - PullRequest
0 голосов
/ 07 июня 2019

У меня есть фрейм данных, который содержит три столбца: два определяют начало и конец периода времени (окно), а другой - массив отдельных временных точек.Я хотел бы определить, находятся ли какие-либо из отдельных точек в начале и конце окна (два других столбца).Идеальным выводом будет True / False для каждой строки.

Я могу перебирать каждую строку кадра данных, извлекать временные точки, времена start_window и end_window и определять эту одну строку за раз, но я искалболее быстрый (без цикла) вариант.

Пример кадра данных

row    start_window     end_window        times (numpy array)

0      307.110309       307.710309     [307.48857, 307.6031]
1      309.140340       311.900309     [315.23134]

...

Вывод на основе приведенного выше кадра данных будет:

True

False

Ответы [ 3 ]

1 голос
/ 07 июня 2019

Один из способов сделать это - использовать pd.DataFrame.apply:

df.apply(lambda x: any(x['start_window']< i< x['end_window'] for i in x['times']), 1)

Вывод:

0     True
1    False
dtype: bool
0 голосов
/ 07 июня 2019

Вот еще одно эффективное решение.

t_max = df["times"].apply(max)
t_min = df["times"].apply(min)
out = (t_max > df["start_window"]) & (t_min < df["end_window"])
0 голосов
/ 07 июня 2019

Давайте сделаем это с проверкой

s=pd.DataFrame(df.time.tolist(),index=df.index)
((df.start_window-s<0)&(df.end_window-s>0)).any(1)
Out[277]: 
0     True
1    False
dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...