GVKun编程网logo

转换pandas.groupby为dict(pandas 转dict)

12

如果您对转换pandas.groupby为dict和pandas转dict感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解转换pandas.groupby为dict的各种细节,并对pandas转

如果您对转换pandas.groupby为dictpandas 转dict感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解转换pandas.groupby为dict的各种细节,并对pandas 转dict进行深入的分析,此外还有关于as_index = False时,groupby.first,groupby.nth,groupby.head有什么区别、dict(groupby)和groupby之间的区别、groupby.object im Pandas、pandas Groupby Diff的实用技巧。

本文目录一览:

转换pandas.groupby为dict(pandas 转dict)

转换pandas.groupby为dict(pandas 转dict)

考虑一下,数据框d

d = pd.DataFrame({''a'': [0, 2, 1, 1, 1, 1, 1],                  ''b'': [2, 1, 0, 1, 0, 0, 2],                  ''c'': [1, 0, 2, 1, 0, 2, 2]}>   a   b   c0   0   2   11   2   1   02   1   0   23   1   1   14   1   0   05   1   0   26   1   2   2

我想按列将其拆分a成字典,像这样:

{0:    a  b  c    0  0  2  1, 1:    a  b  c    2  1  0  2    3  1  1  1    4  1  0  0    5  1  0  2    6  1  2  2, 2:    a  b  c    1  2  1  0}

我发现使用的解决方案pandas.groupby是:

{k: table for k, table in d.groupby("a")}

还有哪些其他解决方案?

答案1

小编典典

您可以dicttuple/list上使用/应用groupby

res = dict(tuple(d.groupby(''a'')))

as_index = False时,groupby.first,groupby.nth,groupby.head有什么区别

as_index = False时,groupby.first,groupby.nth,groupby.head有什么区别

编辑: 我在np.nan@ coldspeed,@ wen-ben,@
ALollz指出的字符串中犯的菜鸟错误。答案非常好,因此我不会删除此问题以保留这些答案。

原文:
我已经阅读了这个问题/答案[groupby.first()和groupby.head(1)有什么区别?

该答案说明差异在于处理NaN价值上。但是,当我打电话给groupbyas_index=False,他们俩都选择了NaN

此外,Pandas具有groupby.nth与和类似的功能head,并且first

有什么差异groupby.first(),groupby.nth(0),groupby.head(1)as_index=False

下面的例子:

In [448]: df
Out[448]:
   A       B
0  1  np.nan
1  1       4
2  1      14
3  2       8
4  2      19
5  2      12

In [449]: df.groupby('A',as_index=False).head(1)
Out[449]:
   A       B
0  1  np.nan
3  2       8

In [450]: df.groupby('A',as_index=False).first()
Out[450]:
   A       B
0  1  np.nan
1  2       8

In [451]: df.groupby('A',as_index=False).nth(0)
Out[451]:
   A       B
0  1  np.nan
3  2       8

我看到`firs()’重置了索引,而其他2则没有。除此之外,还有什么区别吗?

dict(groupby)和groupby之间的区别

dict(groupby)和groupby之间的区别

我有这样的清单

[u'201003',u'200403',u'200803',u'200503',u'201303',u'200903',u'200603',u'201203',u'200303',u'200703',u'201103']

让我们将此列表称为“ years_list”

当我按年分组时

group_by_yrs_list = groupby(years_list,key = lambda year_month: year_month[:-2]) 
for k,v in group_by_yrs_list:
  print k,list(v)

我得到了期望的输出:

2010 [u'201003']
2004 [u'200403']
2008 [u'200803']
2005 [u'200503']
2013 [u'201303']
2009 [u'200903']
2006 [u'200603']
2012 [u'201203']
2003 [u'200303']
2007 [u'200703']
2011 [u'201103']

然后,我像这样稍微更改了实现,

  group_by_yrs_list = dict(groupby(years_list,key = lambda year_month: year_month[:-2]))
  for k,v in group_by_yrs_list.items():
    print k,list(v)

我刚刚添加了一个字典,但是输出是不同的,

2003 []
2006 []
2007 []
2004 []
2005 []
2008 []
2009 []
2011 [u'201103']
2010 []
2013 []
2012 []

我不知道为什么。请帮助我找到字典的实际作用。

(Python 2.7)

groupby.object im Pandas

groupby.object im Pandas

如何解决groupby.object im Pandas?

如何从groupby.object中获得系列,我需要索引和几列(年)并计算平均值!

df_Answer_Three = df_Answer_One_TM.groupby([''Country''])[''2006'',''2007'',''2008'',''2009'',''2010'',''2011'',''2012'',''2013'',''2014'',''2015'']

df_Sum = pd.DataFrame(df_Answer_Three)
df_avgGDP = df_Sum[''2006'':''2015''].mean(axis=1) 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

pandas Groupby Diff

pandas Groupby Diff

所以我的数据框看起来像这样:

from pandas.compat import StringIOd = StringIO(''''''date,site,country,score2018-01-01,google,us,1002018-01-01,google,ch,502018-01-02,google,us,702018-01-03,google,us,602018-01-02,google,ch,102018-01-01,fb,us,502018-01-02,fb,us,552018-01-03,fb,us,1002018-01-01,fb,es,1002018-01-02,fb,gb,100'''''')df = pd.read_csv(d, sep=",")

每个站点的分数因国家/地区而异。我正在尝试查找每个站点/国家/地区组合得分的1/3/5天差异。

输出应为:

date,site,country,score,1_day_diff2018-01-01,google,ch,50,02018-01-02,google,ch,10,-402018-01-01,google,us,100,02018-01-02,google,us,70,-302018-01-03,google,us,60,-102018-01-01,fb,es,100,02018-01-02,fb,gb,100,02018-01-01,fb,us,50,02018-01-02,fb,us,55,52018-01-03,fb,us,100,45

我首先尝试按网站/国家/日期排序,然后按网站和国家/地区分组,但是我无法从分组对象中获得区别。

答案1

小编典典

首先,对DataFrame排序,然后您需要做的是groupby.diff()

df = df.sort_values(by=[''site'', ''country'', ''date''])df[''diff''] = df.groupby([''site'', ''country''])[''score''].diff().fillna(0)dfOut:          date    site country  score  diff8  2018-01-01      fb      es    100   0.09  2018-01-02      fb      gb    100   0.05  2018-01-01      fb      us     50   0.06  2018-01-02      fb      us     55   5.07  2018-01-03      fb      us    100  45.01  2018-01-01  google      ch     50   0.04  2018-01-02  google      ch     10 -40.00  2018-01-01  google      us    100   0.02  2018-01-02  google      us     70 -30.03  2018-01-03  google      us     60 -10.0

sort_values不支持任意排序。如果您需要进行任意排序(例如Google在fb之前),则需要将它们存储在集合中并将列设置为分类。然后sort_values将遵守您在此处提供的顺序。

关于转换pandas.groupby为dictpandas 转dict的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于as_index = False时,groupby.first,groupby.nth,groupby.head有什么区别、dict(groupby)和groupby之间的区别、groupby.object im Pandas、pandas Groupby Diff的相关知识,请在本站寻找。

本文标签: