在本文中,我们将给您介绍关于Pandas-根据日期将数据框拆分为多个数据框?的详细内容,并且为您解答pandas按日期分组的相关问题,此外,我们还将为您提供关于Pandas对多个数据框求和、PANDA
在本文中,我们将给您介绍关于Pandas-根据日期将数据框拆分为多个数据框?的详细内容,并且为您解答pandas按日期分组的相关问题,此外,我们还将为您提供关于Pandas对多个数据框求和、PANDAS将数据框按唯一值行拆分为多个、Pandas左外连接多个列上的多个数据框、python / pandas:如何将两个数据框与具有分层列索引的一个数据框组合在一起?的知识。
本文目录一览:- Pandas-根据日期将数据框拆分为多个数据框?(pandas按日期分组)
- Pandas对多个数据框求和
- PANDAS将数据框按唯一值行拆分为多个
- Pandas左外连接多个列上的多个数据框
- python / 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对多个数据框求和
我有多个数据框,每个数据框都有一个多级索引和一个值列。我想在值列上添加所有数据框。
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中有一个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左外连接多个列上的多个数据框
我是使用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:如何将两个数据框与具有分层列索引的一个数据框组合在一起?
我有两个看起来像这样的数据框:
>>> 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:如何将两个数据框与具有分层列索引的一个数据框组合在一起?等相关内容,可以在本站寻找。
本文标签: