如何从冷冻元组图添加新列?

时间:2019-06-18 06:01:53

标签: python cassandra frozen

我有一个cassandra数据库表,它有一个列作为参数及其类型:

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

我正在尝试从此cassandra表中创建熊猫df:

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

measurement_df = read_measurement_data()

在创建了measurement_df之后,我需要从冻结的元组映射中提取一列,其名称为Speed。

如何添加此新列?

2 个答案:

答案 0 :(得分:1)

CQL元组类型的值以Python tuple类型返回,因此您只需要正确提取数据,然后按索引访问元组中的数据即可。像这样:

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

我建议先从查询中提取数据,然后再生成熊猫数据框

答案 1 :(得分:0)

我通过以下方式解决了我的问题:

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)