我正在尝试将列表从一个数据框列转换为行,但不确定如何在 python 中有效地做到这一点?
我的实际数据有数千行和可变长度列表(在 Specs
列中,但为了简化起见,我将使用下面的示例。
import pandas as pd
data = [{'Type': 'A','Specs': [['a1',50],['a2',14]]},{'Type': 'B','Specs': [['b1',20],['b2',25],['b3',15],['b4',10]]},{'Type': 'C','Specs': [['c1',32]]} ]
df = pd.DataFrame(data)
最终的结果应该等同于下面数据帧的输出
data_out= [{'Type': 'A','model':'a1','qty': 50},{'Type': 'A','model':'a2','qty': 14},'model':'b1','qty': 20},'model':'b2','qty': 25},'model':'b3','qty': 15},'model':'b4','qty': 10},'model':'c1','qty': 32}]
df_out = pd.DataFrame(data_out)
我尝试将 apply
与一个函数一起使用,将每一行列表/值转换为数据帧,并且对如何为每一行返回一个数据帧并使用新行扩展新数据帧感到困惑。如果我走错了路,请告诉我,在大数据上获得所需数据帧输出的最有效方法是什么?谢谢
def convert_list(my_list):
my_df = pd.DataFrame(pv_list,columns=['model','qty'])
return my_df
df[['model','qty']] = df['Specs'].apply(convert_list)