ValueError:无法从重复的轴pd.concat重新索引

时间:2018-07-18 11:57:44

标签: pandas scikit-learn

我正在尝试连接熊猫数据框:

def extract_articles(data, article_numbers):
  result = pd.concat(
     [
        data[data['ARTICLENO'] == article_no]['QUANTITY']
        for article_no in article_numbers
     ],
     axis=1,
  ).fillna(0)
  result.columns = article_numbers
  return result

从csv读取更多行(约100k)时,出现以下错误: ValueError:无法从重复的轴重新索引

这是我的csv基本上的样子:

Date,       ArticleNo, Quantity
2018-07-15, 1005,      150
2018-07-14, 1005,      165
2018-07-12, 1005,      160
2018-07-14, 1008,      230
2018-07-12, 1008,      245

该文件按商品编号和日期排序。对于每个日期,可能有多个“商品编号-数量元组”。有些商品编号没有数据的地方可能存在空白,它们是0。 为什么会出现此错误?

1 个答案:

答案 0 :(得分:1)

我认为索引值重复,您可以更改:

data[data['ARTICLENO'] == article_no]['QUANTITY']

(data.loc[data['ARTICLENO'] == article_no, ['QUANTITY']]
      .set_index(data.groupby('Date').cumcount(), append=True))

MultiIndex

但是对于您的预期输出,需要汇总sum并通过unstack进行调整:

df = df.groupby(['Date','ArticleNo'])['Quantity'].sum().unstack(fill_value=0)
print (df)
ArticleNo   1005  1008
Date                  
2018-07-12   160   245
2018-07-14   165   230
2018-07-15   150     0