Polars 相当于 Pandas 中的 .values

Ton*_*dez 3 pandas python-polars

我想使用 Polars 将数据帧的值转换为数组。

对于 Pandas 我会这样做:

import pandas as pd

df_tests = pd.DataFrame({'col_a':[1,2,3], 'col_b':[4,5,6]}, 'col_c':[7,8,9]})
print(df_tests.values)
Run Code Online (Sandbox Code Playgroud)

Polars 中的等效项是什么?

我尝试过 to_list() 方法,但仅适用于系列。我能得到的最接近的是这个,它返回一个元组列表:

import polars as pl

# Convert Pandas DataFrame to Polars DataFrame
df_tests = pd.DataFrame({'col_a':[1,2,3], 'col_b':[4,5,6]}, 'col_c':[7,8,9]})
df_tests_pl = pl.from_pandas(df_tests)

print(df_tests_pl.select(pl.col(['col_a', 'col_b'])).rows())
Run Code Online (Sandbox Code Playgroud)

sti*_*ego 5

如果您正在寻找 numpy 数组形式的 DataFrame 的值,请使用to_numpy

import polars as pl

df = pl.DataFrame({"col_a": [1, 2, 3], "col_b": [4, 5, 6], "col_c": [7, 8, 9]})

df.to_numpy()
# [[1 4 7]
#  [2 5 8]
#  [3 6 9]]
Run Code Online (Sandbox Code Playgroud)

如果您希望将行值作为 Python 对象,则应该使用该rows方法,该方法将为您提供元组列表:

df.rows()
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
Run Code Online (Sandbox Code Playgroud)

然而,Polars 喜欢柱状数据。如果您正在查找 DataFrame 中的值,理想情况下应该使用to_dict,因为它效率更高:

df.to_dict(as_series=False)
# {'col_a': [1, 2, 3], 'col_b': [4, 5, 6], 'col_c': [7, 8, 9]}
Run Code Online (Sandbox Code Playgroud)