如何在Pandas数据框中存储类似MATLAB单元格数组的数据?

7uhlpewt  于 2023-01-26  发布在  Matlab
关注(0)|答案(1)|浏览(209)

我通过uni work熟悉MATLAB,但最近一直在使用python,因为这是我目前可以访问的。
我使用的是按循环次数和充放电容量(作为时间的函数)分段的电池数据。我的问题是,我希望创建一个数据结构,以便轻松地对这些数据进行分段。在MATLAB中,我会使用一个单元格数组,其中顶层单元格表示循环次数,第二层单元格包含充放电数据。
例如,数据{1}{1}将给予循环1的充电容量,数据{4}{2}将给出循环4的放电容量。
在python中复制这个结构的最佳方法是什么?
我的原始数据文件当前在 Dataframe 中,其中“循环数”列仅为当前循环数,“充电容量”列为随时间增加的相应值。但这未分段,约为30000行数据

sqserrrh

sqserrrh1#

在Pandas中,您可以将数据存储在DataFrame中,DataFrame类似于关系数据库中的表。要将数据存储在类似于MATLAB单元格数组的DataFrame中,您可以创建一个数据类型为“object”的列,并在该列中存储列表、字典或其他DataFrame。
例如,可以创建一个空DataFrame,然后添加一个名为“cell_array”且数据类型为“object”的列:

import pandas as pd
df = pd.DataFrame()
df["cell_array"] = df["cell_array"].astype(object)

还可以在同一列中添加不同的数据类型。

df.loc[1, "cell_array"] = {'name': 'John', 'age': 30}

您还可以在cell_array中存储其他DataFrame。

df2 = pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
df.loc[2, "cell_array"] = df2

可以使用iloc或loc访问器访问存储在“cell_array”列中的数据。

df.loc[0, "cell_array"]

它将返回cell_array的第一个元素list [1,2,3]

相关问题