给定一个看起来像这样的数据框
GROUP VALUE
1 5
2 2
1 10
2 20
1 7
Run Code Online (Sandbox Code Playgroud)
我想计算每组中最大值和最小值之间的差异.也就是说,结果应该是
GROUP DIFF
1 5
2 18
Run Code Online (Sandbox Code Playgroud)
在熊猫中这样做的简单方法是什么?
在Pandas中为大约200万行和100万个组的数据帧执行此操作的快速方法是什么?
给定两个向量,我想创建一个指标矩阵.例如,给定a=np.array([5,5,3,4,4,4]),b=np.array([5,4,3])结果应该是
5 4 3
5 1 0 0
5 1 0 0
3 0 0 1
4 0 1 0
4 0 1 0
4 0 1 0
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最简单方法是什么?
例子:
import pandas as pd
df = pd.DataFrame({'A':[1,2], 'B':[3,4]})
df.to_csv('test.csv', line_terminator='\r\n')
Run Code Online (Sandbox Code Playgroud)
给文件
,A,B\r
\r\n
0,1,3\r
\r\n
1,2,4\r
\r\n
Run Code Online (Sandbox Code Playgroud)
然而,我想要
,A,B\r\n
0,1,3\r\n
1,2,4\r\n
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点(即,\r\n而不是\r\r\n)。我的操作系统是 Windows 10。
对于我的许多团队的用例,熊猫cummin和cummax函数似乎真的很慢.我怎样才能加快它们的速度?
更新
import pandas as pd
import numpy as np
from collections import defaultdict
def cummax(g, v):
df1 = pd.DataFrame(g, columns=['group'])
df2 = pd.DataFrame(v)
df = pd.concat([df1, df2], axis=1)
result = df.groupby('group').cummax()
result = result.values
return result
def transform(g, v):
df1 = pd.DataFrame(g, columns=['group'])
df2 = pd.DataFrame(v)
df = pd.concat([df1, df2], axis=1)
result = df.groupby('group').transform(lambda x: x.cummax())
result = result.values
return result
def itertuples(g, v):
df1 = pd.DataFrame(g, columns=['group'])
df2 = pd.DataFrame(v)
df = pd.concat([df1, df2], …Run Code Online (Sandbox Code Playgroud) 给定一个看起来像这样的熊猫数据框
GROUP VALUE MASK
1 5 false
2 10 false
2 20 false
1 7 true
3 17 false
3 18 false
1 100 false
1 200 true
Run Code Online (Sandbox Code Playgroud)
对于MASK为真的每一行,我想得到与该组中先前值的差,即结果应为
VALUE DIFF
7 2
200 100
Run Code Online (Sandbox Code Playgroud)
如何在Pandas中计算?
如何为具有约200万行和100万组的大型数据帧快速计算出该值?