0

我正在使用 GridDB Python 客户端,我有一个存储我的数据库的容器,我需要将数据框对象转换为列表列表。pandas 提供的 read_sql_query 函数返回一个数据框,但我需要将数据框作为列表列表而不是数据框返回。列表列表中的第一个元素用于数据帧的标题(列名),其他元素用于数据帧中的行。有没有办法我可以做到这一点?请帮助这里是容器的代码和程序读取SQL查询的部分:

#...
import griddb_python as griddb
import pandas as pd
from pprint import pprint

factory = griddb.StoreFactory.get_instance()

# Initialize container
try:
    gridstore = factory.get_store(host="127.0.0.1", port="8080", 
            cluster_name="Cls36", username="root", 
            password="")

    conInfo = griddb.ContainerInfo("Fresher_Students",
                    [["id", griddb.Type.INTEGER],
                     ["First Name",griddb.Type.STRING],
                     ["Last Name", griddb.Type.STRING],
                     ["Gender", griddb.Type.STRING],
                     ["Course", griddb.Type.STRING]
                    ],
                    griddb.ContainerType.COLLECTION, True)
    cont = gridstore.put_container(conInfo)   
    cont.create_index("id", griddb.IndexType.DEFAULT)
    data = pd.read_csv("fresher_students.csv")
    #Add data
    for i in range(len(data)):
        ret = cont.put(data.iloc[i, :])
    print("Data added successfully")

except griddb.GSException as e:
    print(e)

sql_statement = ('SELECT * FROM Fresher_Students')
sql_query = pd.read_sql_query(sql_statement, cont)

def convert_to_lol(query):
    # Code goes here
    # ...
LOL = convert_to_lol(sql_query.head()) # Not Laughing Out Load, it's List of Lists
pprint(LOL)
#...

我想得到这样的东西:

[["id", "First Name", "Last Name", "Gender", "Course"],
 [0, "Catherine", "Ghua", "F", "EEE"],
 [1, "Jake", "Jonathan", "M", "BMS"],
 [2, "Paul", "Smith", "M", "BFA"],
 [3, "Laura", "Williams", "F", "MBBS"],
 [4, "Felix", "Johnson", "M", "BSW"],
 [5, "Vivian", "Davis", "F", "BFD"]]
4

1 回答 1

0

[更新]

我知道的最简单的方法(对于任何 DF):

df = pd.DataFrame({'id':[2, 3 ,4], 'age':[24, 42, 13]})
[df.columns.tolist()] + df.reset_index().values.tolist()

输出:

[['id', 'age'], [0, 2, 24], [1, 3, 42], [2, 4, 13]]
于 2021-08-14T08:35:19.393 回答