假设我有一个包含3列的数据框:日期,股票行情,值(无索引,至少从此开始)。我有很多约会,很多股票,但是每个(ticker,date)
元组都是唯一的。(但是很显然,同一日期将显示在多行中,因为它将在多个行情中出现,而同一行情显示将在多行中显示,因为它将存在许多日期。)
最初,我的行以特定顺序排列,但没有按任何列进行排序。
我想计算每个股票报价的第一个差异(每日变化)(按日期排序),并将其放在数据框中的新列中。在这种情况下,我 不能 简单地做
df['diffs'] = df['value'].diff()
因为相邻的行不是来自同一行情自动收录器。排序如下:
df = df.sort(['ticker', 'date'])
df['diffs'] = df['value'].diff()
不
解决这个问题,因为将有“边界”。即在该排序之后,一个股票行情的最后一个值将高于下一个股票行情的第一个值。然后,计算差异将需要两个代码之间的差异。我不要这个
我希望每个股票的最早日期NaN
在其diff列中结束。
这似乎是一个明显的使用时间,groupby
但是由于某种原因,我似乎无法使其正常工作。明确地说,我想执行以下过程:
ticker
date
value
列的差异diffs
列中的原始数据帧中(最好保持原始数据帧顺序不变)。我必须想象这是单线的。但是我想念什么?
在2013-12-17 9:00 pm编辑
好吧…有些进步。我可以执行以下操作以获取新的数据框:
result = df.set_index(['ticker', 'date'])\
.groupby(level='ticker')\
.transform(lambda x: x.sort_index().diff())\
.reset_index()
但是,如果我了解groupby的机制,ticker
那么现在我的行将首先按排序,然后按排序date
。那是对的吗?如果是这样,我是否需要进行合并以将差分列追加到当前result['current']
的原始数据帧中df
?
做您自己描述的事情并不容易,即
df.sort(['ticker', 'date'], inplace=True)
df['diffs'] = df['value'].diff()
然后校正边界:
mask = df.ticker != df.ticker.shift(1)
df['diffs'][mask] = np.nan
维护您可能会idx = df.index
在开始时执行的原始索引,然后在结束时可以执行df.reindex(idx)
,或者如果它是一个巨大的数据帧,请在
df.filter(['ticker', 'date', 'value'])
然后join
是最后两个数据框。
编辑 :或者,(尽管仍然不使用groupby
)
df.set_index(['ticker','date'], inplace=True)
df.sort_index(inplace=True)
df['diffs'] = np.nan
for idx in df.index.levels[0]:
df.diffs[idx] = df.value[idx].diff()
对于
date ticker value
0 63 C 1.65
1 88 C -1.93
2 22 C -1.29
3 76 A -0.79
4 72 B -1.24
5 34 A -0.23
6 92 B 2.43
7 22 A 0.55
8 32 A -2.50
9 59 B -1.01
这将产生:
value diffs
ticker date
A 22 0.55 NaN
32 -2.50 -3.05
34 -0.23 2.27
76 -0.79 -0.56
B 59 -1.01 NaN
72 -1.24 -0.23
92 2.43 3.67
C 22 -1.29 NaN
63 1.65 2.94
88 -1.93 -3.58
我需要按行比较两个不同大小的数据帧,并打印出不匹配的行。让我们看以下两个例子: 在df2上按行打印并打印出不在df1中的行的最有效方法是什么。 重要提示:我不希望有行: 包括在差异中: 我已经尝试过了:逐行比较两个不同长度的数据帧,为每行添加相等值的列,比较两个数据帧,并排输出它们的差异 但是这些和我的问题不匹配。
假设我有以下数据帧: 我想计算每个的不同值的数量。它应产生以下结果: 我该怎么做?
我有三个数据帧,并试图计算由数据帧1调节的两个数据帧(Df2和Df3)之间的差值。如下面的示例所解释的,我有三个数据帧,Df1、Df2和Df3,它们具有共同的名称。第一步,在Df1中,我想比较“Standard”列和所有三列的值,“das”、“dss”和“tri”可能是行的,并且当这些列的任何值,“das”、“dss”和“tri”高于Df1中的“Standard”时,计算Df2和Df3中相同位置的
示例数据: 我想计算每个唯一列名称的平均值和标准偏差(忽略NA)以获得如下输出: 可再现数据: 我得到的最接近的是 这是我从这篇文章中得到的,但我不知道如何调整它来得到我想要的。我知道我可以取rowmeans的平均值来得到每组的平均值,但这不适用于标准差。
问题内容: 我试图计算两个日期之间的差额,但我注意到一件事。仅计算日期时,间隔中包括夏令时的开始,因此结果将缩短1天。 为了获得准确的结果,还必须考虑小时数。 例如: 输出: 有人有更好的解决方案吗? 问题答案: 哦,是的,有更好的解决方案! 停止使用过时的类,并使用Java 8及更高版本(教程)中内置的java.time API的功能 。具体而言,,,和类。
我遵循了此处提出的计算循环数据平均值的建议: https://en.wikipedia.org/wiki/Mean_of_circular_quantities 但是我也想计算均方差。 上面给出了平均值,但我不知道如何计算SD 我试着只取正弦和余弦的标准偏差的平均值,但我得到了不同的答案。