我对 python 比较陌生,但过去几周一直在虔诚地使用 Wes Kinney 的“用于数据分析的 Python”。我花了几个小时试图找出解决当前问题的方法,但我需要一些帮助。但是,我有一个数据集,其中包含本日历年发送的货物的详细信息;当我每个月都会获得新数据时,一些细节可能已经改变。我已经弄清楚如何识别发生变化的货物,以及如何识别这些变化可能是什么。
所以,假设我已经确定这些货物(在数据框中,原始)已经改变:
ID Code Mode Amount From To Weight Cube Service_Date
MNO123 BBB Air 50 M1234 M9876 60 6 1-1-2013
GHI123 AAA Air 50 M1234 M9876 80 8 1-1-2013
JKL123 AAA Ship 50 M1234 M9876 70 7 1-1-2013
我已经确定了潜在的变化(在数据框中,变化):
ID Code Mode Amount From To Weight Cube Service_Date
MNO123 BBB Air 50 M1234 M9876 60 6 2-2-2013
MNO123 BBB Air 60 M1234 M9876 60 6 2-2-2013
MNO123 BBB Air 70 M1234 M1111 60 6 2-2-2013
GHI123 AAA Air 65 M1234 M9876 80 8 1-1-2013
JKL123 AAA Ship 65 M1234 M9876 70 7 1-1-2013
JKL123 AAA Ship 65 M1234 M9876 70 8 1-1-2013
我要做的就是向更改数据框中添加一个计数列,该列总计与原始数据框中的相应值匹配的值的数量。因此,因为 code、mode、amount、from、to、weight 和 cube 匹配,所以 count 列将在第一次观察时获得 7 的值。类似地,但少了一个匹配值,第二个观察值的计数值为 6,第三个观察值的计数值为 5。
我正在寻找的结果如下:
ID Code Mode Amount From To Weight Cube Service_Date Count
MNO123 BBB Air 50 M1234 M9876 60 6 2-2-2013 7
MNO123 BBB Air 60 M1234 M9876 60 6 2-2-2013 6
MNO123 BBB Air 70 M1234 M1111 60 6 2-2-2013 5
GHI123 AAA Air 65 M1234 M9876 80 8 1-1-2013 7
JKL123 AAA Ship 65 M1234 M9876 70 7 1-1-2013 7
JKL123 AAA Ship 65 M1234 M9876 70 8 1-1-2013 6
浏览了 Wes 的书和该站点上的许多类似的帖子后,我相信我需要使用df.iterrows()
,但我在迭代两个数据帧同时检查和计算匹配值的过程中遇到了困难。
这是我最近的尝试:
for i in changes.iterrows():
for i in original.iterrows():
changes['count'] = 0
if changes(i) == original(i):
changes['count'] +=1
提前感谢您的时间和努力!