相关疑难解决方法(0)

如何制作好的可重复的熊猫示例

花了相当多的时间观察SO上的标签,我得到的印象是pandas问题不太可能包含可重现的数据.这是值得的R社会一直要鼓励不错,并感谢像导游这样,新人能得到放在一起,这些例子一些帮助.能够阅读这些指南并返回可重现数据的人通常会更好地获得他们问题的答案.

我们如何为pandas问题创建良好的可重复示例?简单的数据帧可以放在一起,例如:

import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'], 
                   'income': [40000, 50000, 42000]})
Run Code Online (Sandbox Code Playgroud)

但是许多示例数据集需要更复杂的结构,例如:

  • datetime 指数或数据
  • 多个分类变量(是否等价于R的expand.grid()函数,它会产生某些给定变量的所有可能组合?)
  • MultiIndex或Panel数据

对于dput()难以使用几行代码进行模拟的数据集,是否有与R相当的R ,它允许您生成可复制粘贴的代码以重新生成数据结构?

python pandas

222
推荐指数
5
解决办法
2万
查看次数

Pandas 滚动应用使用多列

我正在尝试pandas.DataFrame.rolling.apply()在多列上使用滚动函数。Python 版本是 3.7,pandas 是 1.0.2。

import pandas as pd

#function to calculate
def masscenter(x):
    print(x); # for debug purposes
    return 0;

#simple DF creation routine
df = pd.DataFrame( [['02:59:47.000282', 87.60, 739],
                    ['03:00:01.042391', 87.51, 10],
                    ['03:00:01.630182', 87.51, 10],
                    ['03:00:01.635150', 88.00, 792],
                    ['03:00:01.914104', 88.00, 10]], 
                   columns=['stamp', 'price','nQty'])
df['stamp'] = pd.to_datetime(df2['stamp'], format='%H:%M:%S.%f')
df.set_index('stamp', inplace=True, drop=True)
Run Code Online (Sandbox Code Playgroud)

'stamp'是单调且唯一的,'price'是双精度'nQty'值且不包含 NaN,是整数且也不包含 NaN。

所以,我需要计算滚动的“质心”,即sum(price*nQty)/sum(nQty)

到目前为止我尝试过的:

df.apply(masscenter, axis = 1)
Run Code Online (Sandbox Code Playgroud)

masscenter 被单行调用 5 次,输出将类似于

price     87.6
nQty     739.0
Name: 1900-01-01 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas rolling-computation

12
推荐指数
3
解决办法
1万
查看次数

Pandas 适用于多列输出的滚动

我正在编写一个代码,它将滚动窗口应用于将返回多列的函数。

输入:Pandas Series
预期输出:3 列 DataFrame

def fun1(series, ):
    # Some calculations producing numbers a, b and c
    return {"a": a, "b": b, "c": c} 

res.rolling('21 D').apply(fun1)
Run Code Online (Sandbox Code Playgroud)

资源内容:

time
2019-09-26 16:00:00    0.674969
2019-09-26 16:15:00    0.249569
2019-09-26 16:30:00   -0.529949
2019-09-26 16:45:00   -0.247077
2019-09-26 17:00:00    0.390827
                         ...   
2019-10-17 22:45:00    0.232998
2019-10-17 23:00:00    0.590827
2019-10-17 23:15:00    0.768991
2019-10-17 23:30:00    0.142661
2019-10-17 23:45:00   -0.555284
Length: 1830, dtype: float64
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: must be real number, not dict
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  • 在 apply 中更改 raw=True
  • 在 apply 中使用 …

python dataframe pandas rolling-computation

7
推荐指数
1
解决办法
4104
查看次数

标签 统计

pandas ×3

python ×3

dataframe ×2

rolling-computation ×2