我有一个pandas数据框,其中每个元素都是3个浮点的列表或元组。
使用它并不是一件容易的事,但这是一个继承的要求。如何有效地将其转换为3个单独的数据帧(或n个浮点列表的n个数据帧)?
例如,df.iloc[0,0] == [0.23, 0.47, 0.89]
中的元素,而我想生成df1.iloc[0,0] == 0.23
,df2.iloc[0,0] == 0.47
,df3.iloc[0,0] == 0.89
。
答案 0 :(得分:1)
我会做这样的事情:
df1, df2, df3 = (df.apply(lambda s: s.apply(lambda l: l[i])) for i in range(3))
答案 1 :(得分:1)
您还可以尝试以下操作:
def unpack_df_to_dfs(df, num_elements):
rowrange = range(0, len(df))
elementrange = range(0, num_elements)
lists = [ [[] for j in rowrange] for i in elementrange ]
for j, row in enumerate(df.index):
for col in df.columns:
for i in elementrange:
lists[i][j].append(df.loc[row, col][i])
return [pd.DataFrame(l) for l in lists]
df1, df2, df3 = unpack_df_to_dfs(df, 3)
其中num_elements
是数据框中的列表或元组中的元素数。