GVKun编程网logo

Pandas-根据日期将数据框拆分为多个数据框?(pandas按日期分组)

11

在本文中,我们将给您介绍关于Pandas-根据日期将数据框拆分为多个数据框?的详细内容,并且为您解答pandas按日期分组的相关问题,此外,我们还将为您提供关于Pandas对多个数据框求和、PANDA

在本文中,我们将给您介绍关于Pandas-根据日期将数据框拆分为多个数据框?的详细内容,并且为您解答pandas按日期分组的相关问题,此外,我们还将为您提供关于Pandas对多个数据框求和、PANDAS将数据框按唯一值行拆分为多个、Pandas左外连接多个列上的多个数据框、python / pandas:如何将两个数据框与具有分层列索引的一个数据框组合在一起?的知识。

本文目录一览:

Pandas-根据日期将数据框拆分为多个数据框?(pandas按日期分组)

Pandas-根据日期将数据框拆分为多个数据框?(pandas按日期分组)

我有一个带有多个列以及一个日期列的数据框。日期格式为15年12月31日,我将其设置为日期时间对象。

我将datetime列设置为索引,并希望对数据框的每个月执行回归计算。

我相信实现此目的的方法是将数据框基于月份拆分为多个数据框,存储到数据框列表中,然后对列表中的每个数据框执行回归。

我使用过groupby可以按月成功拆分数据框,但是不确定如何正确地将groupby对象中的每个组转换为数据框,以便能够在其上运行回归函数。

有谁知道如何根据日期将一个数据框拆分为多个数据框,或者更好地解决我的问题?

这是我到目前为止编写的代码

import pandas as pdimport numpy as npimport statsmodels.api as smfrom patsy import dmatricesdf = pd.read_csv(''data.csv'')df[''date''] = pd.to_datetime(df[''date''], format=''%Y%m%d'')df = df.set_index(''date'')# Group dataframe on index by month and year # Groupby works, but dmatrices does not for df_group in df.groupby(pd.TimeGrouper("M")):    y,X = dmatrices(''value1 ~ value2 + value3'', data=df_group,          return_type=''dataframe'')

答案1

小编典典

如果必须循环,则遍历groupby对象时需要解压缩键和数据框:

import pandas as pdimport numpy as npimport statsmodels.api as smfrom patsy import dmatricesdf = pd.read_csv(''data.csv'')df[''date''] = pd.to_datetime(df[''date''], format=''%Y%m%d'')df = df.set_index(''date'')

注意group_name这里的用法:

for group_name, df_group in df.groupby(pd.Grouper(freq=''M'')):    y,X = dmatrices(''value1 ~ value2 + value3'', data=df_group,          return_type=''dataframe'')

如果要避免迭代,请看看Paul
H的要旨中的笔记本(请参阅他的评论),但是使用的简单示例apply是:

def do_regression(df_group, ret=''outcome''):    """Apply the function to each group in the data and return one result."""    y,X = dmatrices(''value1 ~ value2 + value3'',                    data=df_group,                          return_type=''dataframe'')    if ret == ''outcome'':        return y    else:        return Xoutcome = df.groupby(pd.Grouper(freq=''M'')).apply(do_regression, ret=''outcome'')

Pandas对多个数据框求和

Pandas对多个数据框求和

我有多个数据框,每个数据框都有一个多级索引和一个值列。我想在值列上添加所有数据框。

df1 + df2

并非每个数据帧中的所有索引都是完整的,因此我进入nan了所有数据帧中都不存在的行。

我该如何克服这个问题并将任何数据框中不存在的行都视为值为0?

例如。我想得到

   val
a    2
b    4
c    3
d    3

来自pd.DataFrame({'val':{'a': 1,'b':2,'c':3}}) + pd.DataFrame({'val':{'a': 1,'d':3}})而不是

   val
a    2
b    4
c  NaN
d  NaN

PANDAS将数据框按唯一值行拆分为多个

PANDAS将数据框按唯一值行拆分为多个

我在Pandas中有一个DataFrame

      PRICE   Name     PER   CATEGORY   STORENAME0      9.99    MF      gram  Indica     Store11      9.99    HY      gram  Herb       Store22      9.99    FF      gram  Herb       Store2

我想要做的是将它们拆分为多个数据框以具有唯一的名称,然后将其拆分为类别。

当前代码:

names = df[''STORENAME''].unique().tolist()   #find unique valuesstore1 = df[df[''STORENAME'']==names[0]]        store2 = df[df[''STORENAME'']==names[1]]

这段代码可以完美地工作,但是我想知道是否存在Python方式,因为商店的数量可能会发生变化。

这需要绘制商店中类别价格的差异。

谢谢!

答案1

小编典典

我认为您可以创建dictionary of DataFrames

dfs = dict(tuple(df.groupby(''STORENAME'')))

然后按STORENAME

store1 = dfs[''Store1'']store2 = dfs[''Store2'']print (store1)   PRICE Name   PER CATEGORY STORENAME0   9.99   MF  gram   Indica    Store1print (store2)   PRICE Name   PER CATEGORY STORENAME1   9.99   HY  gram     Herb    Store22   9.99   FF  gram     Herb    Store2

Pandas左外连接多个列上的多个数据框

Pandas左外连接多个列上的多个数据框

我是使用DataFrame的新手,我想知道如何在一系列表的多个列上执行等效于左外部联接的SQL

例:

df1: 
Year    Week    Colour    Val1 
2014       A       Red      50
2014       B       Red      60
2014       B     Black      70
2014       C       Red      10
2014       D     Green      20

df2:
Year    Week    Colour    Val2
2014       A     Black      30
2014       B     Black     100
2014       C     Green      50
2014       C       Red      20
2014       D       Red      40

df3:
Year    Week    Colour    Val3
2013       B       Red      60
2013       C     Black      80
2013       B     Black      10
2013       D     Green      20
2013       D       Red      50

本质上,我想做类似以下SQL代码的操作(注意df3在Year上没有加入):

SELECT df1.*,df2.Val2,df3.Val3
FROM df1
  LEFT OUTER JOIN df2
    ON df1.Year = df2.Year
    AND df1.Week = df2.Week
    AND df1.Colour = df2.Colour
  LEFT OUTER JOIN df3
    ON df1.Week = df3.Week
    AND df1.Colour = df3.Colour

结果应如下所示:

Year    Week    Colour    Val1    Val2    Val3
2014       A       Red      50    Null    Null
2014       B       Red      60    Null      60
2014       B     Black      70     100    Null
2014       C       Red      10      20    Null
2014       D     Green      20    Null    Null

我曾尝试使用合并和联接,但无法弄清楚如何在多个表上以及涉及多个联接时执行此操作。有人可以帮我吗?

谢谢

python / pandas:如何将两个数据框与具有分层列索引的一个数据框组合在一起?

python / pandas:如何将两个数据框与具有分层列索引的一个数据框组合在一起?

我有两个看起来像这样的数据框:

>>> df1              A    B2000-01-01  1.4  1.42000-01-02  1.7 -1.92000-01-03 -0.2 -0.8>>> df2              A    B2000-01-01  0.6 -0.32000-01-02 -0.4  0.62000-01-03  1.1 -1.0

我怎样才能像下面这样用层次列索引从这两个数据框中提取一个?

            df1       df2              A    B    A    B2000-01-01  1.4  1.4  0.6 -0.32000-01-02  1.7 -1.9 -0.4  0.62000-01-03 -0.2 -0.8  1.1 -1.0

答案1

小编典典

这是一个doc示例:http : //pandas.pydata.org/pandas-docs/stable/merging.html#more-concatenating-with-group-keys

In [9]: df1 = pd.DataFrame(np.random.randn(3,2),columns=list(''AB''),index=pd.date_range(''20000101'',periods=3))In [10]: df2 = pd.DataFrame(np.random.randn(3,2),columns=list(''AB''),index=pd.date_range(''20000101'',periods=3))In [11]: df1Out[11]:                    A         B2000-01-01  0.129994  1.1896082000-01-02 -1.126812  1.0876172000-01-03 -0.930070  0.253098In [12]: df2Out[12]:                    A         B2000-01-01  0.535700 -0.7695332000-01-02 -1.698531 -0.4566672000-01-03  0.451622 -1.500175In [13]: pd.concat(dict(df1 = df1, df2 = df2),axis=1)Out[13]:                  df1                 df2                             A         B         A         B2000-01-01  0.129994  1.189608  0.535700 -0.7695332000-01-02 -1.126812  1.087617 -1.698531 -0.4566672000-01-03 -0.930070  0.253098  0.451622 -1.500175

关于Pandas-根据日期将数据框拆分为多个数据框?pandas按日期分组的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Pandas对多个数据框求和、PANDAS将数据框按唯一值行拆分为多个、Pandas左外连接多个列上的多个数据框、python / pandas:如何将两个数据框与具有分层列索引的一个数据框组合在一起?等相关内容,可以在本站寻找。

本文标签: