无法为数据框项指定值

时间:2013-08-08 22:08:46

标签: python pandas

希望有人可以帮我解决这个持续6小时的头痛问题。我正在尝试使用Pandas将购买历史记录中的行与销售历史记录中的行配对。

我们收到的收到的产品与仓库之间存在一对多的关系,以及销售货物的销售订单。在pandas中,我遍历销售行,找到它所属的采购行,然后将一个采购行标识符分配给销售行。

6小时的头痛是为数据框项目分配新值的简单情况(我认为这是正确的焦点,单元格将是excel中使用的相应术语)。我已经阅读了调用副本和视图之间的区别,我99,99999%确定它不是问题。

使用超过1000次试验(ipython计算提示)和打印命令后,我已将我的故障代码问题缩小到这一行,无论我怎么写,都不能按预期工作< / p>

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'

0 个答案:

没有答案