Разделение файла csv на фрейм данных panda несколькими столбцами

У меня есть файл tsv с несколькими столбцами. Есть 10 и более столбцов, но важными для меня столбцами являются те, у которых есть имя user_name, shift_id, url_id. Я хочу создать кадр данных, который сначала разделяет весь файл csv на основе user_names, т. Е. Группируются только строки с одинаковым именем пользователя. Из этого куска я делаю еще один кусок, где только строки с определенным shift_id группируются вместе, а затем из этого куска делают кусок с тем же URL-адресом. Я, к сожалению, не могу поделиться данными из-за правила компании и сделать воображаемую таблицу данных более запутанной.

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

Я видел ответы, разделяющие кадр данных на определенное значение столбца, но в моем случае у меня есть три значения столбца, и порядок, в котором они разделены, тоже имеет значение.

Спасибо за помощь!

One Solution collect form web for “Разделение файла csv на фрейм данных panda несколькими столбцами”

Предполагая, что вы читаете столбцы в dataframe

 df = pd.DataFrame({'col1':[1,2,3], 'col2':[4,5,6],'col3':[7,8,9], 'col4':[1,2,3],'col5':[1,2,3],'col6':[1,2,3], 'col7':[1,2,3],'col8':[1,2,3],'col9':[1,2,3], 'col91':[1,2,3]}) print(df) 

Вывод:

  col1 col2 col3 col4 col5 col6 col7 col8 col9 col91 0 1 4 7 1 1 1 1 1 1 1 1 2 5 8 2 2 2 2 2 2 2 2 3 6 9 3 3 3 3 3 3 3 

Теперь мы можем выбрать только три столбца, представляющие интерес, пусть это будут col1, col2, and col3

 tmp_df = df[['col1', 'col2', 'col3']] print(tmp_df) 

Вывод:

  col1 col2 col3 0 1 4 7 1 2 5 8 2 3 6 9 

Далее мы хотим отфильтровать на основе трех значений столбца:

 final_df = tmp_df[(tmp_df.col1 == 1) & (tmp_df.col2 == 4) & (tmp_df.col3== 7)] print(final_df) 

Вывод:

  col1 col2 col3 0 1 4 7 

После чтения в dataframe все эти шаги могут быть достигнуты в одной строке:

 final = df[['col1', 'col2', 'col3']][(df.col1 == 1) & (df.col2 == 4) & (df.col3== 7)] final 

Надеюсь, поможет!

Обновить:

 df = pd.DataFrame({'col1':[1,1,1,1,1], 'col2':[4,4,4,4,7],'col3':[7,7,9,7,7], 'col4':['X','X','X','X','X'],'col5':['X','X','X','X','X'],'col6':['X','X','X','X','X'], 'col7':['X','X','X','X','X'],'col8':['X','X','X','X','X'],'col9':['X','X','X','X','X'], 'col91':['X','X','X','X','X']}) print(df) 

Вывод:

  col1 col2 col3 col4 col5 col6 col7 col8 col9 col91 0 1 4 7 XXXXXXX 1 1 4 7 XXXXXXX 2 1 4 9 XXXXXXX 3 1 4 7 XXXXXXX 4 1 7 7 XXXXXXX 

Теперь, используя аналогичную маскировку, как указано выше:

 final = df[(df.col1 == 1) & (df.col2 == 4) & (df.col3== 7)] final 

Вывод:

  col1 col2 col3 col4 col5 col6 col7 col8 col9 col91 0 1 4 7 XXXXXXX 1 1 4 7 XXXXXXX 3 1 4 7 XXXXXXX 
  • Странное поведение в python с dict лямбда-функциями
  • Python3: UnicodeEncodeError только при запуске crontab
  • Как создать pandas DatetimeIndex с частотой года?
  • Как использовать несколько версий Python без удаления
  • Python: Pandas, текстовый файл в DataFrame
  • Удаляет ли элемент из списка списка в Python?
  • Ускорение в петлеобразных структурах
  • Обновление Python на Mac
  • Python: значение end = '' в print print ("\ t", end = '')
  • создать DataFrame из dict неравных списков длины
  • Pip.exe из Python в Windows 10
  • Python - лучший язык программирования в мире.