[英]Insert Pandas dataframe into Cassandra Table
从文档开始 ,有一种方法可以将数据插入表中:
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)
)
我发现了这一点,但实际上我只需要一个简单的插入操作。
您可以使用以下命令获取数据框的列名称
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)))
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.