我对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。指数' DlvDate ']
基本上在上面这行中正在进行以下操作:
DFF Dataframe的所有索引列和SDD Dataframe的所有索引列被连接。在SDD数据框架上创建一个名为"RDD"的新列,并为DFF数据框架的所有匹配索引值SDD创建列。在RDD列中设置DlvDate列值,对于不匹配的值设置null。
对应的pyspark左连接SDD为左数据框的数据框,然后在"需要检查DFF数据帧的任何一个join col是否为空,然后将SDD数据帧DlvDate设置为空。