如果我的数据框具有包含相同名称的列,是否有办法将具有相同名称的列与某种函数(即总和)组合在一起?
例如:
In [186]:
df["NY-WEB01"].head()
Out[186]:
NY-WEB01 NY-WEB01
DateTime
2012-10-18 16:00:00 5.6 2.8
2012-10-18 17:00:00 18.6 12.0
2012-10-18 18:00:00 18.4 12.0
2012-10-18 19:00:00 18.2 12.0
2012-10-18 20:00:00 19.2 12.0
Run Code Online (Sandbox Code Playgroud)
我如何通过对列名相同的每一行进行求和来折叠NY-WEB01列(有一堆重复的列,而不仅仅是NY-WEB01)?
我想创建一年的排名(因此在2012年,经理B为1. 2011年,经理B再次为1).我和pandas rank函数挣扎了一段时间,并且不想求助于for循环.
s = pd.DataFrame([['2012','A',3],['2012','B',8],['2011','A',20],['2011','B',30]], columns=['Year','Manager','Return'])
Out[1]:
Year Manager Return
0 2012 A 3
1 2012 B 8
2 2011 A 20
3 2011 B 30
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是附加代码(之前认为这不相关):
s = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
b = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
s = s.append(b)
s['Rank'] = s.groupby(['Year'])['Return'].rank(ascending=False)
raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only …Run Code Online (Sandbox Code Playgroud) 我有动力使用pandas rolling功能来执行滚动多因素回归(这个问题不是关于滚动多因素回归).我希望我能够apply在a之后使用df.rolling(2)并将得到的pd.DataFrame提取物与ndarray一起使用.values并执行必要的矩阵乘法.它没有那么成功.
这是我发现的:
import pandas as pd
import numpy as np
np.random.seed([3,1415])
df = pd.DataFrame(np.random.rand(5, 2).round(2), columns=['A', 'B'])
X = np.random.rand(2, 1).round(2)
Run Code Online (Sandbox Code Playgroud)
对象是什么样的:
print "\ndf = \n", df
print "\nX = \n", X
print "\ndf.shape =", df.shape, ", X.shape =", X.shape
df =
A B
0 0.44 0.41
1 0.46 0.47
2 0.46 0.02
3 0.85 0.82
4 0.78 0.76
X =
[[ 0.93]
[ 0.83]]
df.shape = (5, …Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
from to datetime other
-------------------------------------------------
11 1 2016-11-06 22:00:00 -
11 1 2016-11-06 20:00:00 -
11 1 2016-11-06 15:45:00 -
11 12 2016-11-06 15:00:00 -
11 1 2016-11-06 12:00:00 -
11 18 2016-11-05 10:00:00 -
11 12 2016-11-05 10:00:00 -
12 1 2016-10-05 10:00:59 -
12 3 2016-09-06 10:00:34 -
Run Code Online (Sandbox Code Playgroud)
我想分组"从"然后"到"列,然后按降序排序"日期时间",然后最终想要计算当前时间和下一次之间按对象分组的时间差.例如,在这种情况下,我想拥有如下数据框:
from to timediff in minutes others
11 1 120
11 1 255
11 1 225
11 1 0 (preferrably subtract this date from the epoch)
11 12 300 …Run Code Online (Sandbox Code Playgroud) 我正在绞尽脑汁地试图弄清楚如何在Python的极坐标库中使用groupbyand 。apply
来自 Pandas,我使用的是:
def get_score(df):
return spearmanr(df["prediction"], df["target"]).correlation
correlations = df.groupby("era").apply(get_score)
Run Code Online (Sandbox Code Playgroud)
但在极地,这不起作用。
我尝试了几种方法,主要是:
correlations = df.groupby("era").apply(get_score)
Run Code Online (Sandbox Code Playgroud)
但这失败并出现错误消息:
'可以获取 DataFrame 属性'_df'。确保返回 DataFrame 对象。: PyErr { type: <class 'AttributeError'>, value: AttributeError("'numpy.float64' object has no attribute '_df'"),
有任何想法吗?
我的数据集中有两列,col1和col2.我希望按照col1对数据进行分组,然后根据每个组的大小对数据进行排序.也就是说,我想以其大小的升序显示组.
我编写了用于分组和显示数据的代码,如下所示:
grouped_data = df.groupby('col1')
"""code for sorting comes here"""
for name,group in grouped_data:
print (name)
print (group)
Run Code Online (Sandbox Code Playgroud)
在显示数据之前,我需要按照组大小对其进行排序,这是我无法做到的.
我有一个数据帧 df
df = pd.DataFrame(np.arange(20).reshape(10, -1),
[['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'],
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']],
['X', 'Y'])
Run Code Online (Sandbox Code Playgroud)
如何获取按索引第一级分组的第一行和最后一行?
我试过了
df.groupby(level=0).agg(['first', 'last']).stack()
Run Code Online (Sandbox Code Playgroud)
得到了
X Y
a first 0 1
last 6 7
b first 8 9
last 12 13
c first 14 15
last 16 17
d first 18 19
last 18 19
Run Code Online (Sandbox Code Playgroud)
这非常接近我想要的.如何保留1级索引并改为:
X Y
a a 0 1
d 6 7
b e 8 9
g 12 13 …Run Code Online (Sandbox Code Playgroud) 我有一个如下列表.
[['Andrew', '1', '9'], ['Peter', '1', '10'], ['Andrew', '1', '8'], ['Peter', '1', '11'], ['Sam', '4', '9'], ['Andrew', '2', '2']]
Run Code Online (Sandbox Code Playgroud)
我想总结由其他列分组的最后一列.结果是这样的
[['Andrew', '1', '17'], ['Peter', '1', '21'], ['Sam', '4', '9'], ['Andrew', '2', '2']]
Run Code Online (Sandbox Code Playgroud)
这仍然是一个清单.
在实际操作中,我总是想总结由许多其他列分组的最后一列.有没有办法在Python中做到这一点?非常感激.
lists,tuples,strings with separator)?我已经看到了这些反复出现的问题,询问了大熊猫聚合功能的各个方面.今天关于聚合及其各种用例的大部分信息都是在数十个措辞严重,不可搜索的帖子中分散的.这里的目的是为后代整理一些更重要的观点.
此Q/A旨在成为一系列有用的用户指南中的下一部分:
我有以下熊猫数据框:
data = {
'ID': [100, 100, 100, 100, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300],
'value': [False, False, True, False, False, True, True, True, False, False, False, True, True, False],
}
df = pandas.DataFrame (data, columns = ['ID','value'])
Run Code Online (Sandbox Code Playgroud)
我想获得以下组:
这可以用熊猫来完成吗?
我试过了
group = df.groupby((df['value'].shift() != df['value']).cumsum())
Run Code Online (Sandbox Code Playgroud)
但这会返回错误的结果。
pandas ×10
pandas-groupby ×10
python ×10
dataframe ×4
group-by ×3
aggregation ×1
data-science ×1
difference ×1
duplicates ×1
list ×1
numpy ×1
python-3.x ×1
rank ×1