Я думал, что с помощью огромной библиотеки pandas.DataFrame должно быть довольно просто сделать все стандартное содержимое, которое вы можете сделать с помощью таблицы SQL. но после изучения многих вариантов я до сих пор не нашел хорошего рабочего решения.pandas DataFrame create, access, append MultiIndex с разными типами столбцов - стиль таблицы SQL
Требование:
- стол с 4 колонками с различными типами данных (uint32, строкой, ...), 3 от них должен работать как индекс
- много (> 10k) дополнительных столбцов типа int8
- Первоначально у меня возникла идея динамически добавлять строки и столбцы, но это оказалось очень медленным (с использованием df.at [row, col] = y)
- В результате я создал DataFrame с несколькими столбцами с различными типами и присоединить его к другому большому DataFrame, созданному из массива numpy с элементерами ц типа uint8
... которые выглядели довольно хорошо, но теперь ничего не работает для доступа, добавить или набор элементов массива с использованием индекса
import numpy as np import pandas as pd # create DataFrame idx_names = ['A','B','C'] col_names = ['y'] df = pd.DataFrame(columns = idx_names + col_names) # create DataFrame from numpy array npa = np.zeros((5,10),dtype=np.uint8) dfa = pd.DataFrame(npa) # add DataFrames column-wise t = pd.concat([df,dfa], axis=1) # set index columns t.set_index(idx_names,inplace=True)
y 0 1 2 3 4 5 6 7 8 9
A B C
NaN NaN NaN NaN 0 0 0 0 0 0 0 0 0 0
NaN NaN 0 0 0 0 0 0 0 0 0 0
NaN NaN 0 0 0 0 0 0 0 0 0 0
NaN NaN 0 0 0 0 0 0 0 0 0 0
NaN NaN 0 0 0 0 0 0 0 0 0 0
Теперь я бы например, устанавливать значения в столбцах (y, 0, ... 9) путем предоставления индекса. Если индекс еще не доступен, он должен быть добавлен в таблицу.
t((t['A']='US',t['B']='CA',t['C']='SFO') , 'y') = "IT"
t((t['A']='US',t['B']='CA',t['C']='LA') , '1') = 255
Вы можете уточнить? Что вы ожидаете от того, что происходит на самом деле? Вы получаете какие-либо ошибки? Каков ваш последний вопрос? – kramer65
Задайте новый вопрос, если у вас есть новый вопрос ... – MaxU
попробуйте следующее: 't.loc [('US', 'CA', 'SFO'), 'y'] = 'IT '' – MaxU