Python 删除数据帧中的嵌套数组
我正在尝试将.mat文件转换为pandas数据帧,但是.mat文件的结构使其难以分解。目前,数据帧如下所示Python 删除数据帧中的嵌套数组,python,pandas,data-structures,dataframe,Python,Pandas,Data Structures,Dataframe,我正在尝试将.mat文件转换为pandas数据帧,但是.mat文件的结构使其难以分解。目前,数据帧如下所示 A 2008-01-02 [1] 2008-01-03 [2] 2008-01-04 [3] 2008-01-07 [4] 2008-01-08 [5] 看起来每个列中包含的值都包含在它们
A
2008-01-02 [1]
2008-01-03 [2]
2008-01-04 [3]
2008-01-07 [4]
2008-01-08 [5]
看起来每个列中包含的值都包含在它们自己的数组?中。数据类型正在返回对象。我最终希望聚合我的列,但由于它们不是数字,我无法执行数字函数调用。关于如何在保留数据帧结构的同时从数组结构中删除值,有什么想法吗 您可以使用该方法对数据帧的列应用操作
您需要定义
函数
,然后将其传递给apply
方法,具体取决于对象的类型。例如,如果是列表,您可能希望选择第一项,如果是字符串,您可能希望提取并转换数字。这似乎有效
df = pd.DataFrame(data)
unnested_lst = []
for col in df.columns:
unnested_lst.append(df[col].apply(pd.Series).stack())
result = pd.concat(unnested_lst, axis=1, keys=df.columns)
result
A
2008-01-02 0 1
2008-01-03 0 2
2008-01-04 0 3
2008-01-07 0 4
2008-01-08 0 5
不确定如何删除零的索引列。有什么想法吗?如果我理解正确,每个条目都是包含在Python列表中的元素,您希望从列表中删除该元素,以便每个条目都是标量
一种方法是使用函数。请注意,此函数适用于整个数据帧
df = df.applymap(lambda x: x[0]) # If same operation is to be used on all columns
如果您只想对某些列执行转换,可以使用:
在这两种情况下,您可能必须在之后更改列的dtype
,才能使用它们;从列表更改为单个元素时,可以保留列的对象数据类型
。如果是这种情况,您可以使用:
df['column name'] = df['column name'].astype([new type])
这就是我要找的。谢谢
df['column name'] = df['column name'].astype([new type])