希望有人可以帮助我解决这 6 个小时的持续头痛问题。我正在尝试使用 Pandas 将购买历史记录中的行与销售历史记录中的行配对。
我们收到仓库的进货与发货的销售订单之间存在一对多的关系。在 pandas 中,我遍历销售行,找到它所属的采购行,然后将采购行标识符分配给销售行。
6 小时头痛是为数据框项分配新值的简单案例(我认为这是正确的 chargon,单元格将是 excel 中使用的相应术语)。我已经阅读了调用副本和视图之间的区别,我 99,99999% 确信这不是问题。
在使用超过 1000 次试验(ipython 计算提示)和打印命令后,我将故障代码的问题缩小到这一行,无论我如何编写它,都无法按预期工作
InnkjopHisto.ix[InnkjoptAntall.index.values[0], ['Rest']] = np.float64(0)
如果感兴趣,该行是下面代码的一部分。我试过用各种不同的方式来理解这条线,但都无济于事。我不能,为我的一生为该项目分配一个价值。其他失败的尝试:
InnkjopHisto['Rest'][InnkjoptAntall.index.values[0] = np.float64(0)
InnkjopHisto.loc[InnkjoptAntall.index.values[0], ['Rest']] = np.float64(0)
我也尝试分配各种对象类型,看看这是否是问题所在,但似乎不是。谢谢你看我的问题
for salgslinje in SalgsHisto.iterrows():
if (salgslinje[0] == 599):
referanseIDer = DFAllok[(DFAllok['OrderCopyNo'] == salgslinje[1]['OrderNo']) & (DFAllok['ArticleNo'] == salgslinje[1]['ArticleNo'])&(DFAllok['Brukt'] == 'ikke')]['ReferenceID']
if len(referanseIDer) > 0:
for Alloknummer in referanseIDer.iteritems():
InnkjoptAntall = InnkjopHisto[InnkjopHisto['Rest'] > 0]
InnkjoptAntall = InnkjoptAntall[(InnkjoptAntall['OrderNo'] == Alloknummer[1])&(InnkjoptAntall['ArticleNo'] == salgslinje[1]['ArticleNo'])]['Rest']
if len(InnkjoptAntall) > 0 :
differanse = InnkjoptAntall.values[0] + salgslinje[1]['Quantity']
if differanse == np.float64(0):
InnkjopHisto.ix[InnkjoptAntall.index.values[0], ['Rest']] = np.float64(0)
DFAllok.ix[Alloknummer[0], ['Brukt']] = 'Brukt'
SalgsHisto['KorresponderendeInnkjop'][salgslinje[0]] = InnkjopHisto.ix[InnkjoptAntall.index.values[0], 'UnikID']
break
编辑:回答杰夫的评论,这里有一些进一步的信息:
InnkjopHisto.head()
SubGroupNo OrderNo ArticleNo Created Quantity UnikID Rest
0 0 801606 101575 2011-09-27 08:10:12 1260 0 1260
1 100102 800157 100113 2011-04-04 13:55:13 2040 1 2040
2 100102 800158 101124 2011-04-04 13:20:01 1330 2 1330
3 100102 800170 100124 2011-04-04 08:38:50 1065 3 1065
4 100102 800216 101124 2011-04-07 13:22:18 1129 4 1129
InnkjopHisto.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 5758 entries, 0 to 5763
Data columns (total 7 columns):
SubGroupNo 5758 non-null values
OrderNo 5758 non-null values
ArticleNo 5758 non-null values
Created 5758 non-null values
Quantity 5758 non-null values
UnikID 5758 non-null values
Rest 5758 non-null values
dtypes: float64(2), int64(4), object(1)
pd.__version__
'0.11.0'