我正在尝试连接熊猫数据框:
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。 为什么会出现此错误?
答案 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