[英]Pandas Dataframe index & loc
我是 Pandas 的新手,正在做一項將一些 pandas 代碼轉換為 pyspark 的作業。
有人可以解釋一下下面的代碼實際上在做什么嗎?
有一個名為 DFF 的 Pandas Dataframe,如下所示:
DB
SalesOrder SOItem SLNo
4500041 10 1 PP
4501034 20 1 ZH
這是 DFF 的索引詳細信息
DB
SalesOrder SOItem SLNo
4500041 10 1 PP
4501034 20 1 ZH
MultiIndex([('4500041', '10', 1),
('4501034', '20', 1)],
names=['SalesOrder', 'SOItem', 'SLNo'])
還有一個名為 SDD 的 Pandas Dataframe 如下所示:
SalesOrder SOItem SLNo DlvDate ... DB CommittQty ProdOrder CommitQty
0 4500041 10 1 2017-02-16 ... PP 6,000 6.0
1 4501034 20 1 2017-02-13 ... ZH 1,000 1.0
2 4501034 10 2 2017-02-16 ... ZH 5,00 5.0
3 4501464 20 2 2017-02-13 ... KK 9,000 8500065 9.0
[4 rows x 11 columns]
我需要幫助的代碼部分如下。
SDD.loc[DFF.index, 'RDD'] = SDD.loc[DFF.index, 'DlvDate']
有人可以解釋一下上面的代碼行中正在做什么嗎? 我在 Pyspark 中得到了這兩個數據幀,但無法理解如何處理上面提到的 Pandas 代碼。
我打印了每個級別進行調試,但是並沒有得到太多的理解。
這是使用以下代碼執行的以下操作。
SDD.loc[DFF.index, 'RDD'] = SDD.loc[DFF.index, 'DlvDate']
基本上在上面這一行中,正在完成以下操作。
DFF Dataframe 的所有索引列和 SDD Dataframe 的所有索引列都已連接。 在 SDD Dataframe 上創建一個名為“RDD”的新列,對於 DFF Dataframe 的所有匹配索引值,在 RDD 列中設置 SDD.DlvDate 列值,對於不匹配的值,設置 null。
等效的 pyspark 左加入數據幀,其中 SDD 為左 dataframe,然后使用“case when then”需要檢查 DFF dataframe 的任何加入列是否為 null 然后將 SDD dataframe DlvDate 設置為 88363418
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.