将 Pandas 数据框插入 Cassandra 表

Posted

技术标签:

【中文标题】将 Pandas 数据框插入 Cassandra 表【英文标题】:Insert Pandas dataframe into Cassandra Table 【发布时间】:2018-02-27 01:21:49 【问题描述】:

从documentation,有一种方法可以将数据插入到表中:

session.execute(
    """
    INSERT INTO users (name, credits, user_id)
    VALUES (%s, %s, %s)
    """,
    ("John O'Reilly", 42, uuid.uuid1())
)

必须在此处说明列名。但是,就我而言,我有一个数据框,它只有一个标题行和一行数据,例如: "sepal_length" : 5.1,"sepal_width" : 3.5,"petal_length" : 1.4 ,"petal_width" : 0.2, "species" : "Iris"

用户将为我的 API 提供信息以连接到他们特定的 Cassandra 数据库表,其中包含存储在数据框中的列名称。如何插入数据框的数据相对于映射到表的列标题,而不像文档中所述的那样实际硬编码列名,因为不同情况下的标题不同。

我正在尝试实现这样的目标:

def insert_table(df, table_name, ... #connection details):
    #Set up connection and session
    session.execute(
        """
        INSERT INTO table_name(#df's column header)
        VALUES (%s, %s, %s)
        """,
        (#df's data for the only row)
    ) 

我发现了this,但实际上我只需要一个简单的插入操作。

【问题讨论】:

【参考方案1】:

您可以通过以下方式获取 Dataframe 的列名

column_names = list(my_dataframe.columns.values)

您可以重写insert_table(...) 以接受列名列表作为参数。

例如,可以使用字符串替换来形成 CQL 语句:

cql_query = """
    INSERT INTO table_name (col_names)
    VALUES (%s, %s, %s)
    """.format(table_name="my_table", col_names=','.join(map(str, column_names)))
...

【讨论】:

以上是关于将 Pandas 数据框插入 Cassandra 表的主要内容,如果未能解决你的问题,请参考以下文章

使用 PyMongo 将 Pandas 数据框插入 mongodb

如何将 pandas udf 应用于大型矩阵数据框

如何使用 pandas.read_csv 将 CSV 文件中的数据插入数据框?

根据 pandas 数据框中的条件将 value_counts 与 groupby 函数一起使用并插入新列

如何通过 executemany() 语句转换 pandas 数据框以进行插入?

在 pandas 数据框中插入 sklearn CountVectorizer 的结果