使用python

时间:2017-03-10 02:43:55

标签: python pandas dictionary

我有一个如下所示的日志文件

源日志文件

OrderID,PathCode
1000,0
2000,1
3000,2
4000,1
5000,2
6000,0
7000,2
8000,1
9000,0

但目标日志文件不包含它来自的PathCode,它只知道如下的序列。

OrderID
3000
9999 #Ignore this since not in source OrderID
1000
2000
5000
9991 #Ignore this since not in source OrderID
4000
6000
9000
8000
7000
9998 #Ignore this since not in source OrderID

如何将PathCode添加到dest文件。 OrderID始终是唯一的

预期产出

OrderID,PathCode
3000,2
1000,0
2000,1
5000,2
4000,1
6000,0
9000,0
8000,1
7000,2

基本上我必须按照目标文件

中给出的顺序对源文件进行排序

1 个答案:

答案 0 :(得分:1)

您可以使用地图

dest['pathcode'] = dest['OrderID'].map(source.set_index('OrderID')['PathCode'])

你得到了

    OrderID pathcode
0   3000    2
1   1000    0
2   2000    1
3   5000    2
4   4000    1
5   6000    0
6   9000    0
7   8000    1
8   7000    2

要获取3行组并找到第一个路径码,请尝试

dest.iloc[0::3, 1].value_counts() #df.iloc[0::3] returns row no 0,3,6,9 etc

2    2
0    1

所以路径码2首先出现2次,0次,1次。

编辑: 我用你的测试用例dest文件尝试了代码。地图按预期工作,你需要删除,但你还需要重新索引切片才能工作。

dest.dropna(inplace=True)
dest.reset_index(drop=True, inplace=True)
dest.iloc[0::3, 1].value_counts()

你得到了

2    2
0    1