この 6 時間続く頭痛を助けてくれる人がいるといいのですが。Pandas を使用して、購入履歴の行と販売履歴の行をペアにしようとしています。
倉庫に入荷する商品と、商品が発送される販売注文の間には、1 対多の関係があります。pandas では、販売行を繰り返し処理し、それが属する購入行も見つけて、販売行に購入行 ID を割り当てます。
6 時間の頭痛の種は、データフレーム項目に新しい値を割り当てる単純なケースです (これは正しい文字だと思います。セルは、Excel で使用される対応する用語です)。コピーとビューの呼び出しの違いについて読んだことがありますが、それが問題ではないことを 99,99999% 確信しています。
1000回以上の試行(ipythonはプロンプトをカウントします)とprintコマンドを使用した後、誤動作するコードの問題をこの行に絞り込みました。これは、どのように記述しても意図したとおりに機能しません
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'