本文将分享pythonitertools.groupby的详细内容,此外,我们还将为大家带来关于as_index=False时,groupby.first,groupby.nth,groupby.he
本文将分享python itertools.groupby的详细内容,此外,我们还将为大家带来关于as_index = False时,groupby.first,groupby.nth,groupby.head有什么区别、df.groupby.apply(join)与df.groupby.agg(join)的输出差异、Groupby.mean 和 Groupby.std 使用连接数据框中的索引号、itertools groupby 中没有出现值 - python的相关知识,希望对你有所帮助。
本文目录一览:- python itertools.groupby
- as_index = False时,groupby.first,groupby.nth,groupby.head有什么区别
- df.groupby.apply(join)与df.groupby.agg(join)的输出差异
- Groupby.mean 和 Groupby.std 使用连接数据框中的索引号
- itertools groupby 中没有出现值 - python
python itertools.groupby
实际例子
输入:$ cat data.in
01 25
02 24
13 13
13 13
14 12
25 01
25 01
输出: $ cat data.in | python map-reduce.py
read_input <generator object read_input at 0x1041a61e0>
01 [''01'', ''25''] <itertools._grouper object at 0x10417bed0>
02 [''02'', ''24''] <itertools._grouper object at 0x10417bf10>
13 [''13'', ''13''] <itertools._grouper object at 0x10417bed0>
13 [''13'', ''13''] <itertools._grouper object at 0x10417bed0>
14 [''14'', ''12''] <itertools._grouper object at 0x10417bf10>
25 [''25'', ''01''] <itertools._grouper object at 0x10417bed0>
25 [''25'', ''01''] <itertools._grouper object at 0x10417bed0>
$ cat map-reduce.py (以下代码来自网络 http://www.cnblogs.com/joyeecheung/p/3757915.html)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Some description here...
"""
import sys
from operator import itemgetter
from itertools import groupby
def read_input(file):
"""Read input and split."""
for line in file:
yield line.rstrip().split(''\t'')
def main():
data = read_input(sys.stdin)
print "read_input", data
for key, kviter in groupby(data, itemgetter(0)):
# some code here..
for k in kviter:
print key, k, kviter
if __name__ == "__main__":
main()
函数分析
https://stackoverflow.com/questions/8116666/itertools-groupby/15250161
help(''itertools'')
groupby(iterable[, keyfunc]) --> sub-iterators grouped by value of keyfunc(v)
help(''operator'')
class itemgetter(__builtin__.object)
| itemgetter(item, ...) --> itemgetter object
|
| Return a callable object that fetches the given item(s) from its operand.
| After f = itemgetter(2), the call f(r) returns r[2].
| After g = itemgetter(2, 5, 3), the call g(r) returns (r[2], r[5], r[3])
as_index = False时,groupby.first,groupby.nth,groupby.head有什么区别
编辑: 我在np.nan
@ coldspeed,@ wen-ben,@
ALollz指出的字符串中犯的菜鸟错误。答案非常好,因此我不会删除此问题以保留这些答案。
原文:
我已经阅读了这个问题/答案[groupby.first()和groupby.head(1)有什么区别?
该答案说明差异在于处理NaN
价值上。但是,当我打电话给groupby
时as_index=False
,他们俩都选择了NaN
。
此外,Pandas具有groupby.nth
与和类似的功能head
,并且first
有什么差异groupby.first(), groupby.nth(0), groupby.head(1)
有as_index=False
?
下面的例子:
In [448]: dfOut[448]: A B0 1 np.nan1 1 42 1 143 2 84 2 195 2 12In [449]: df.groupby(''A'', as_index=False).head(1)Out[449]: A B0 1 np.nan3 2 8In [450]: df.groupby(''A'', as_index=False).first()Out[450]: A B0 1 np.nan1 2 8In [451]: df.groupby(''A'', as_index=False).nth(0)Out[451]: A B0 1 np.nan3 2 8
我看到`firs()’重置了索引,而其他2则没有。除此之外,还有什么区别吗?
答案1
小编典典主要问题是您可能''np.nan''
存储了字符串,而不是真正的null值。以下是这三个null
值的不同处理方式:
样本数据:
import pandas as pddf = pd.DataFrame({''A'': [1,1,2,2,3,3], ''B'': [None, ''1'', np.NaN, ''2'', 3, 4]})
first
这将返回每个组中的第一个非空值。奇怪的是它不会跳过None
,尽管可以通过kwarg来实现dropna=True
。因此,
您可能会返回原来属于不同行的列的值 :
df.groupby(''A'', as_index=False).first()# A B#0 1 None#1 2 2#2 3 3df.groupby(''A'', as_index=False).first(dropna=True)# A B#0 1 1#1 2 2#2 3 3
head(n)
返回组中的前n行。 值保持在行内 。如果您给它的n
行数超过了行数,它将返回该组中的所有行而不会抱怨:
df.groupby(''A'', as_index=False).head(1)# A B#0 1 None#2 2 NaN#4 3 3df.groupby(''A'', as_index=False).head(200)# A B#0 1 None#1 1 1#2 2 NaN#3 2 2#4 3 3#5 3 4
nth
:
这占用了nth
行,因此 值 再次 保持在row内
。.nth(0)
与相同.head(1)
,但用途不同。例如,如果您需要第0行和第2行,则很难做到.head()
,而使用则容易.nth([0,2])
。同样,它.head(10)
比容易编写.nth(list(range(10))))
。
df.groupby(''A'', as_index=False).nth(0)# A B#0 1 None#2 2 NaN#4 3 3
nth
还支持删除具有任何空值的行,因此您可以使用它返回不包含任何空值的第一行,这与 .head()
df.groupby(''A'', as_index=False).nth(0, dropna=''any'')# A B#A #1 1 1#2 2 2#3 3 3
df.groupby.apply(join)与df.groupby.agg(join)的输出差异
如何解决df.groupby.apply(join)与df.groupby.agg(join)的输出差异?
我是Pandas的新手,目前正在学习groupby.agg()和groupby.apply()。以为我已经了解了,直到遇到以下输出为止。
Python版本3.7.3 Pandas版本0.24.2
数据框
In [46]: rng = np.random.RandomState(0)
...: df = pd.DataFrame({''key'': [''A'',''B'',''C'',''A'',''C''],...: ''data1'': [0,1,2,4,5],...: ''data2'': rng.randint(0,10,6)},...: columns = [''key'',''data1'',''data2''])
In [47]: df
Out[47]:
key data1 data2
0 A 0 5
1 B 1 0
2 C 2 3
3 A 0 3
4 B 4 7
5 C 5 9
输出
In [50]: df.groupby(''key'').agg(lambda x: '',''.join(x.astype(str)))
Out[50]:
data1 data2
key
A 0,0 5,3
B 1,4 0,7
C 2,5 3,9
In [49]: df.groupby(''key'').apply(lambda x: '',''.join(x.astype(str)))
Out[49]:
key
A key,data1,data2
B key,data2
C key,data2
dtype: object
我的问题是:
- 在上述情况下,为什么使用groupby.apply()和groupby.agg()在输出上会有区别?
- 为什么groupby.apply()方法提取列标题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Groupby.mean 和 Groupby.std 使用连接数据框中的索引号
如何解决Groupby.mean 和 Groupby.std 使用连接数据框中的索引号
我连接了两个数据帧,它们包含相同数量的行和列,对应于具有多个变量的 384 个时间点。因此,新数据帧包含 2 * 384 个索引号,我想用它来连接新数据帧或同一数据帧中的选定变量,方法是取每两个对应索引号的均值和标准差。
索引 | 变量X |
---|---|
0 | 值 A |
384 | Y 值 |
0 | Aa 值 |
384 | 值 Yy |
从上面的“数据框”中,我想获得值 A 和 Aa 以及值 Y 和 Yy 的均值和标准差(相同或新数据框中的 4 个新列,但对于更多列的所有 384 个值) /变量)。
我查看了可以计算均值和 st.dev 的 df.groupby,但我不知道如何使用索引值来计算,而且我也不确定这是否是一个好的解决方案?另一种方法可能是后退一步,而不是连接两个原始数据帧?很高兴听到一些关于如何解决这个问题的想法..谢谢
itertools groupby 中没有出现值 - python
如何解决itertools groupby 中没有出现值 - python
我正在尝试使用 python - itertools.groupby
对字符串中的值进行分组。我曾尝试使用此代码:
for key,values in itertools.groupby(s):
print(key,list(values))
我得到这个输出:
a [''a'']
b [''b'']
a [''a'',''a'']
b [''b'',''b'',''b'']
c [''c'']
这很好。但是当我添加一个 if
条件并将代码更改为这种方式时:
out = ''''
for key,values in itertools.groupby(s):
if len(list(values))==1:
out+=key
else:
out += key
out += str(len(list(values)))
print(key,list(values))
我得到这个输出:
a []
b []
a []
b []
c []
我不知道为什么列表是空的
解决方法
values
是一个迭代器,在它用完之前你只能对它调用一次 list()
。您应该将该结果保存在一个变量中并重复使用它。
out = ''''
for key,values in itertools.groupby(s):
value_list = list(values) # values iterator exhausted here,can''t use it again
if len(value_list)==1:
out+=key
else:
out += key
out += str(len(value_list))
print(key,value_list)
今天关于python itertools.groupby的分享就到这里,希望大家有所收获,若想了解更多关于as_index = False时,groupby.first,groupby.nth,groupby.head有什么区别、df.groupby.apply(join)与df.groupby.agg(join)的输出差异、Groupby.mean 和 Groupby.std 使用连接数据框中的索引号、itertools groupby 中没有出现值 - python等相关知识,可以在本站进行查询。
本文标签: