gpt4 book ai didi

python - Pandas 按日期索引求和和分组

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:42 25 4
gpt4 key购买 nike

我有一个记录列表,我需要按月计算每个引用和组的总和。

输入

Date1;Date2;Company;Reference;Description;Value;Currency;
24.01.2014;23.01.2014;Company1;Debit;Text;-100,00;EUR;
24.01.2014;24.01.2014;Company2;Debit;Text;-130,00;EUR;
21.01.2014;24.01.2014;Company1;Debit;Text;-50,00;EUR;
21.01.2014;21.01.2014;Company3;Credit;Text;600,00;EUR;
17.02.2014;16.01.2014;Company2;Debit;Text;-110,00;EUR;
16.02.2014;16.01.2014;Company1;Credit;Text;40,00;EUR
02.03.2014;02.03.2014;Company6;Debit;Text;90,00;EUR

期望的输出

         Credit Debit
Date1
2014-01; 600; -180
2014-02; 40; -110
2014-03; NaN; -90

这是我的代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pylab
DATA = pd.read_csv('C:\Users\Desktop\File.txt'
CLEAN_VALUE=DATA['Value'].str.replace('.','').str.replace(',','.').astype(float)
DATA['CLEAN_VALUE']=CLEAN_VALUE
SUM=DATA['CLEAN_VALUE'].groupby(DATA['Reference']).sum()
DATA['Date1']=pd.to_datetime(DATA['Date1'],dayfirst=True,unit='D')
summe=DATA[:10].groupby(['Date1','Reference']).sum().unstack()
Sorted=pd.date_range(2013-01-01,2014-03-01,freq="M").resample('H', how=len)

在我尝试按月分组的最后一步之前,它实际上工作正常。我收到此错误:

Error message TypeError: Only valid with DatetimeIndex or PeriodIndex. Any suggestions? Thanks in advance.

最佳答案

这需要 0.13.1(对于 infer_datetime_format)。这比直接使用日期解析器。这会将 datelike 转换为正确的 datetime64[ns] dtype。

In [75]: df = read_csv(StringIO(data),
sep=';',
decimal=',',
infer_datetime_format=True,
parse_dates=['Date1','Date2']
).dropna(how='all',axis=1)

In [76]: df
Out[76]:
Date1 Date2 Company Reference Description Value Currency
0 2014-01-24 2014-01-23 Company1 Debit Text -100 EUR
1 2014-01-24 2014-01-24 Company2 Debit Text -130 EUR
2 2014-01-21 2014-01-24 Company1 Debit Text -50 EUR
3 2014-01-21 2014-01-21 Company3 Credit Text 600 EUR
4 2014-02-17 2014-01-16 Company2 Debit Text -110 EUR
5 2014-02-16 2014-01-16 Company1 Credit Text 40 EUR
6 2014-03-02 2014-03-02 Company6 Debit Text 90 EUR

[7 rows x 7 columns]

这需要 0.14/master,并且将是使用基于时间的和其他石斑鱼进行多重分组的新的简单方法。

In [77]: df.groupby([pd.Grouper(freq='MS',key='Date1'),'Reference']).sum().unstack()
Out[77]:
Value
Reference Credit Debit
Date1
2014-01-01 600 -280
2014-02-01 40 -110
2014-03-01 NaN 90

[3 rows x 2 columns]

<0.14/master 你可以这样做:

In [79]: df.set_index('Date1').groupby(lambda x: (x.year,x.month)).apply(lambda x: x.groupby('Reference').sum()).unstack()
Out[79]:
Value
Reference Credit Debit
(2014, 1) 600 -280
(2014, 2) 40 -110
(2014, 3) NaN 90

[3 rows x 2 columns]

关于python - Pandas 按日期索引求和和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22594923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com