Pandas 数据框,空的或有 3 列要 pickle

Pandas dataframe, empty or with 3 column to pickle

我根本不习惯pandas,所以我的问题有几个问题。

我有一个函数计算一个名为 solutions 的列表。此列表可以由 3 个值的元组组成 (a, b, c) 或为空。

solutions = [(a,b,c), (d,e,f), (g,h,i)]

为了保存,我先把它变成了一个numpy数组,然后在命名列之后用pandas保存。

solutions = np.asarray(solutions)
df = pd.DataFrame(solutions)
df.columns = ["Name1", "Name2", "Name3"]
df.to_pickle(path)

我的问题是有时我的解决方案列表是空的:solutions = []。因此,行 df.columns 引发错误。为了绕过它,我目前检查解决方案的大小,如果它是空的,我会:

pickle.dump([], path, "wb")

我希望我的数据类型更加一致,并在两种情况下保存相同的格式。 => 如果列表为空,我想用一个空数据框保存 3 列名称。最终目标是使用 pd.read_pickle() 重新打开文件并轻松访问其中的数据。

第二期,我想重新打开pickled的文件,并添加一列。你能告诉我正确的方法吗?

第三个问题,我如何 select 数据框的一部分。例如,我想要 Name1 value % 0.25 == 0.

列所在的所有行

谢谢

使用以下方法创建数据框:

df = pandas.DataFrame(data=solutions, columns=['name1', 'name2', 'name3'])

如果 solutions 为空,它仍然会创建一个包含 3 列和 0 行的数据框。

In [2]: pd.DataFrame(data=[(1,2,3), (4,5,6)], columns=['a','b','c'])
Out[2]: 
   a  b  c
0  1  2  3
1  4  5  6
In [3]: pd.DataFrame(data=[], columns=['a','b','c'])
Out[3]: 
Empty DataFrame
Columns: [a, b, c]
Index: []

第三个问题:

df["Name1"] % 0.25 == 0

计算一系列布尔值,其中第一列中的值可以除以 0.25。您可以将它用于 select 数据框的行:

df[ df["Name1"] % 0.25 == 0 ]