Как разместить дублирующиеся строки данных в одной строке

В документации jQuery.fn.on есть хорошее объяснение.

Короче:

Обработчики событий привязаны только к выбранные в данный момент элементы; они должны существовать на странице, когда ваш код делает вызов .on().

Таким образом, в следующем примере #dataTable tbody tr должен существовать до генерации кода.

$("#dataTable tbody tr").on("click", function(event){
    console.log($(this).text());
});

Если на страницу вводится новый HTML-код, предпочтительнее использовать делегированные события для присоединения обработчика событий, как описано ниже.

Делегированные события имеют то преимущество, что они могут обрабатывать события от элементов потомков, которые будут добавлены в документ позже. Например, если таблица существует, но строки добавляются динамически с использованием кода, следующее будет обрабатывать ее:

$("#dataTable tbody").on("click", "tr", function(event){
    console.log($(this).text());
});

В дополнение к их способности обрабатывать события на дочерних элементах, которые еще не созданы, другим преимуществом делегированных событий является их потенциал для гораздо более низких накладных расходов, когда необходимо контролировать многие элементы. В таблице данных с 1000 строками в tbody первый пример кода прикрепляет обработчик к 1000 элементам.

Подход с делегированными событиями (второй пример кода) прикрепляет обработчик события только к одному элементу , tbody, и событию нужно только выровнять один уровень (от щелчка tr до tbody).

Примечание. Делегированные события не работают для SVG .

1
задан King Java 28 March 2019 в 00:39
поделиться

3 ответа

Сначала мы разбиваем наши данные на left и right. После этого мы используем pandas.DataFrame.merge , чтобы собрать наши данные вместе и дать правильные suffixes:

df_L = df[df.Ear == 'Left'].drop('Ear',axis=1)
df_R = df[df.Ear == 'Right'].drop('Ear', axis=1)

print(df_L, '\n')
print(df_R)

  PatientID  Model#   SerNum FName LName     PName          PPhone
0    P99999     300  1234567  John   Doe  Jane Doe  (999) 111-2222 

  PatientID  Model#   SerNum FName LName     PName          PPhone
1    P99999     400  2345678  John   Doe  Jane Doe  (999) 111-2222

Теперь мы можем объединиться и дать правильные суффиксы:

df = pd.merge(df_L, df_R.iloc[:, :3], on = 'PatientID', suffixes=['Left', 'Right'])

print(df)
  PatientID  Model#Left  SerNumLeft FName LName     PName          PPhone  \
0    P99999         300     1234567  John   Doe  Jane Doe  (999) 111-2222   

   Model#Right  SerNumRight  
0          400      2345678  
0
ответ дан Erfan 28 March 2019 в 00:39
поделиться

Это больше похоже на проблему pivot, поэтому я использую pivot_table здесь

s=df.pivot_table(index=['PatientID','FName','LName','PName','PPhone'],columns='Ear',values=['Model#','SerNum'],aggfunc='first')
s.columns=s.columns.map(' '.join)
s.reset_index(inplace=True)
s
  PatientID FName LName     ...      Model# Right SerNum Left SerNum Right
0    P99999  John   Doe     ...               400     1234567      2345678
[1 rows x 9 columns]
0
ответ дан Wen-Ben 28 March 2019 в 00:39
поделиться

Лучший источник - официальный источник:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.html [ 116]

Вы также можете узнать о мультииндексах, уровнях и т. Д.

Я предпочитаю присоединиться:

import pandas as pd

columns = ['PatientID', 'Model#', 'Ear', 'SerNum', 'FName', 'LName', 'PName', 'PPhone']
data = [[
    'P99999', '300', 'Left', '1234567', 'John', 'Doe', 'Jane Doe', '(999) 111-2222'],
    ['P99999', '400', 'Right', '2345678', 'John', 'Doe', 'Jane Doe', '(999) 111-2222']]

df = pd.DataFrame(data=data, columns=columns)
df = df.set_index('PatientID')

df = df[df['Ear'] == 'Left'].drop('Ear', axis=1).join(df[df['Ear'] == 'Right'].drop('Ear', axis=1), lsuffix='_left', rsuffix='_right').reset_index()

Вывод:

  PatientID Model#_left SerNum_left  ... LName_right PName_right    PPhone_right
0    P99999         300     1234567  ...         Doe    Jane Doe  (999) 111-2222

РЕДАКТИРОВАТЬ :
1. Исправлено, забыли удалить столбец :)
2. Теперь с вашими данными:)

0
ответ дан mr_mo 28 March 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: