我读了一个带有重复索引的csv,像这样的熊猫:
data = pd.read_csv('/home/dev/PycharmProjects/test/download.csv',
parse_dates=True, index_col=['DATE'], low_memory=False)
print(data.info(memory_usage = 'deep'))
data_extracted = data.groupby(['DATE','ARTICLENO'])['QUANTITY'].sum().unstack()
data_extracted = data_extracted.fillna(value=np.nan)
我的csv在特定日期为商品编号提供以下条目:
Quantity, Date
378 2015-01-05 00:00:00.0
450 2015-01-05 00:00:00.0
378 2015-01-05 00:00:00.0
270 2015-01-05 00:00:00.0
432 2015-01-05 00:00:00.0
828 2015-01-05 00:00:00.0
数据帧缩短到特定时间范围:
data_extracted = data_extracted.loc['2015-01-01' : '2015-12-31']
然后打印。对于特定的文章编号,我得到以下列:
2015-01-05 00:00:00.0 378450378270432828
当我使用csv的较小部分(例如nrows = 1000000)时,我没有此效果。 谁能解释我为什么会这样?在进行groupby时,我已经检查了sum(),但是我永远都无法达到这么大的值,并且数据框中的大值对于csv中找到的所有日期都是连续的。
答案 0 :(得分:0)
列中有字符串,因此请尝试转换为float
:
data['QUANTITY'] = data['QUANTITY'].astype(float)
如果要转换多列:
cols = ['QUANTITY','Another col']
data[cols] = data[cols].astype(float)
如果要转换所有列:
data = data.astype(float)
如果上述解决方案失败,请使用to_numeric
:
data['QUANTITY'] = pd.to_numeric(data['QUANTITY'], errors='coerce')