如何从冻结元组映射添加新列



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

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

我正在尝试从这个卡桑德拉表创建一个熊猫 df:

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

创建measurement_df后,我需要从冻结的元组地图中提取一列,它的名字是速度。

如何添加此新列?

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

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

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

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

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)

最新更新