Как добавить новую колонку с карты Frozen Tuple? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть таблица базы данных кассандры, в которой есть столбец в качестве параметров и ее тип:

parameters map<text, frozen<tuple<text, text, bigint, double, text>>>,

Я пытаюсь создать панду из этой таблицы кассандры:

def read_measurement_data():
    query = "select * from measurement"
    return pd.DataFrame(list(session.execute(query)))

measurement_df = read_measurement_data()

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

Как я могу добавить этот новый столбец?

Ответы [ 2 ]

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

значения типов кортежей CQL возвращаются как тип Python tuple, поэтому вам просто нужно правильно извлечь ваши данные и получить доступ к данным в кортеже по индексу. Как то так:

rows = session.execute('SELECT parameters FROM test.p1')
for row in rows:
   print row.parameters.values()

Я рекомендую сначала извлечь данные из запроса, и только после этого генерировать фрейм данных Pandas

0 голосов
/ 05 июля 2019

Я решил мою проблему следующим образом:

def add_column(row):

    xnhct1 = row['parameters'].get('speed')

    if xnhct1 is not None:
        return xnhct1[3]

    return 0

measurement_table['speed'] = measurement_table.apply(lambda row: add_column(row), axis=1)
...