簡體   English   中英

Pandas Dataframe 索引和位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM