将值逐行写入数据帧

2024-04-24 04:55:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

df1=

Customer | Item | Qty   
----------------------
001      |A     | 3   
001      |B     | 3    
002      |C     | 4  
002      |D     | 8 
...      |...   |...

我想把数据帧转换成这样的格式:

df2=

Customer | A | B | C | D |...   
-----------------------------
001      | 3 | 3 | 0 | 0 |...
002      | 0 | 0 | 4 | 8 |...

我通过以下代码执行此操作:

customer_list=list(set(df1.Custmer.values))
item_list=list(set(df1.Item.values))
df2=pd.DataFrame(columns=["Customer"]+item)
df2["Customer"]=customer_list
for index in df1.index:
    df2.loc[df2["Customer"]==df1.loc[index,"Customer"],df1.loc[index,"Item"]]=df1.lic[index,"Qty"]

然而,我的原始数据非常大,df1有1000000+行,这使得我的程序工作非常慢。我想知道是否有其他快速的方法得到结果。谢谢你


Tags: 数据index格式customeritemloclistqty
1条回答
网友
1楼 · 发布于 2024-04-24 04:55:23

你的感觉是对的。一般来说,在使用pandas或numpy时,循环通常是一种较差的方法,因为使用这些库的全部目的是以比在每一行上循环更有效的方式处理数据集

您正在寻找的方法是pivot,如下所述。 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pivot.html

在代码中,如下所示:

df2 = df1.pivot(index='Customer', columns='Item', values='Qty')

相关问题 更多 >