小编Run*_*ean的帖子

python pandas将index转换为datetime

如何将字符串的pandas索引转换为datetime格式

我的数据框'df'是这样的

                     value          
2015-09-25 00:46    71.925000
2015-09-25 00:47    71.625000
2015-09-25 00:48    71.333333
2015-09-25 00:49    64.571429
2015-09-25 00:50    72.285714
Run Code Online (Sandbox Code Playgroud)

但索引是字符串类型,但我需要一个日期时间格式,因为我得到错误

'Index' object has no attribute 'hour'
Run Code Online (Sandbox Code Playgroud)

使用时

 df['A'] = df.index.hour
Run Code Online (Sandbox Code Playgroud)

python pandas

50
推荐指数
3
解决办法
8万
查看次数

Python:熊猫系列 - 为什么要使用loc?

为什么我们将'loc'用于pandas数据帧?似乎以下代码使用或不使用loc编译anr以相同的速度运行

%timeit df_user1 = df.loc[df.user_id=='5561']

100 loops, best of 3: 11.9 ms per loop
Run Code Online (Sandbox Code Playgroud)

要么

%timeit df_user1_noloc = df[df.user_id=='5561']

100 loops, best of 3: 12 ms per loop
Run Code Online (Sandbox Code Playgroud)

那么为什么要使用loc?

编辑:这已被标记为重复的问题.但是,虽然pandas iloc vs ix vs loc解释?确实提到*

你可以只使用数据框的getitem进行列检索 :

*

df['time']    # equivalent to df.loc[:, 'time']
Run Code Online (Sandbox Code Playgroud)

它没有说明为什么我们使用loc,虽然它确实解释了loc的许多功能,但我的具体问题是"为什么不完全省略loc"?我已经接受了以下非常详细的答案.

还有其他帖子的答案(我认为不是答案)在讨论中非常隐藏,任何寻找我正在寻找的人都会发现很难找到信息,而且提供的答案会更好我的问题.

python series loc pandas

47
推荐指数
3
解决办法
2万
查看次数

Pandas - 使用apply()时,'Series'对象没有属性'colNames'

我需要使用lambda函数来逐行计算.例如,创建一些数据帧

import pandas as pd
import numpy as np

def myfunc(x, y):
    return x + y

colNames = ['A', 'B']
data = np.array([np.arange(10)]*2).T

df = pd.DataFrame(data, index=[range(0, 10)], columns=colNames)
Run Code Online (Sandbox Code Playgroud)

使用'myfunc'这确实有效

df['D'] = (df.apply(lambda x: myfunc(x.A, x.B), axis=1))
Run Code Online (Sandbox Code Playgroud)

但这第二种情况不起作用!

df['D'] = (df.apply(lambda x: myfunc(x.colNames[0], x.colNames[1]), axis=1))
Run Code Online (Sandbox Code Playgroud)

给出错误

AttributeError: ("'Series' object has no attribute 'colNames'", u'occurred at index 0')
Run Code Online (Sandbox Code Playgroud)

我真的需要使用第二种情况(使用列表访问colNames),这会产生错误,有关如何执行此操作的任何线索?

谢谢

python pandas

8
推荐指数
1
解决办法
6万
查看次数

pandas,使用args作为数据帧行条目

我有一个pandas数据帧'df',有两列'A'和'B',我有一个带有两个参数的函数

def myfunction(B, A):
    # do something here to get the result
    return result
Run Code Online (Sandbox Code Playgroud)

我想使用'apply'函数逐行将它应用到df

df['C'] = df['B'].apply(myfunction, args=(df['A'],))
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Run Code Online (Sandbox Code Playgroud)

什么发生在这里,似乎需要df ['A']作为整个系列!不仅仅是该系列中的行条目.

python args apply pandas

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

Python - StatsModels,OLS置信区间

在Statsmodels中,我可以使用我的模型

import statsmodels.api as sm

X = np.array([22000, 13400, 47600, 7400, 12000, 32000, 28000, 31000, 69000, 48600])
y = np.array([0.62, 0.24, 0.89, 0.11, 0.18, 0.75, 0.54, 0.61, 0.92, 0.88])
X2 = sm.add_constant(X)
est = sm.OLS(y, X2)
est2 = est.fit()
Run Code Online (Sandbox Code Playgroud)

然后使用打印一个很好的摘要

print(est2.summary())
Run Code Online (Sandbox Code Playgroud)

并使用提取的东西,如p值

est2.pvalues
Run Code Online (Sandbox Code Playgroud)

可在此页面找到http://www.statsmodels.org/dev/generated/statsmodels.regression.linear_model.RegressionResults.html

但是在摘要中存在置信区间,我对如何提取这些置信区间感到迷茫,就像我对pvalues一样.

除了在摘要中看到它们,我怎样才能获得这些置信区间?

python statsmodels

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

C或C++的<math.h>是什么?

我需要自然对数函数用于.cpp(c ++)源文件.现在,我当然可以通过快速谷歌搜索和简单的库解决方案来做到这一点.但我有点困惑......

在cplusplus dot com网站的参考/ cmath/log /下他们有一个如何使用日志功能的例子,如下

/* log example */
#include <stdio.h>      /* printf */
#include <math.h>       /* log */

int main ()
{
   double param, result;
   param = 5.5;
   result = log (param);
   printf ("log(%f) = %f\n", param, result );
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有一些问题:

1)他们为什么使用

<stdio.h>
Run Code Online (Sandbox Code Playgroud)

我认为这是针对C而不是C++?

2)他们为什么使用

<math.h>
Run Code Online (Sandbox Code Playgroud)

我虽然.h代表C头文件而不是.hpp C++头文件?

忘记使用stdio(无论如何我会使用iostream),但即便如此

<math.h>
Run Code Online (Sandbox Code Playgroud)

感觉就像我在编写C代码而不是C++代码.我通过教学课程学习C++,教师在第一周学习了C,然后说我们不再使用C,但从现在开始将使用C++.如果老师问"你为什么使用C头文件?我应该用C++工作",我觉得自己无法解释自己.

任何解释都非常感激.

c++ math logging

6
推荐指数
1
解决办法
3979
查看次数

pandas从datetime索引中删除秒数

我有一个名为'df'的pandas dataFrame,如下所示

                       value    
2015-09-27 03:58:30    1.0  
2015-09-27 03:59:30    1.0  
2015-09-27 04:00:30    1.0  
2015-09-27 04:01:30    1.0
Run Code Online (Sandbox Code Playgroud)

我只想删除秒数来获得这个

                       value    
2015-09-27 03:58:00    1.0  
2015-09-27 03:59:00    1.0  
2015-09-27 04:00:00    1.0  
2015-09-27 04:01:00    1.0
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

香港专业教育学院尝试过像

df.index.to_series().apply(datetime.replace(second=0, microsecond=0))
Run Code Online (Sandbox Code Playgroud)

但我总是得到错误

TypeError: descriptor 'replace' of 'datetime.datetime' object needs an argument
Run Code Online (Sandbox Code Playgroud)

python indexing seconds pandas

6
推荐指数
1
解决办法
6325
查看次数

Python Pandas - Index'对象没有属性'小时'

我有一个pandas日期框架,以下代码可以正常工作

df['hour'] = df.index.hour
df['c'] = df['hour'].apply(circadian)
Run Code Online (Sandbox Code Playgroud)

但我试图使用以下代码减少制作'小时'coloumn的需要

df['c'] = df.apply(lambda x: circadian(x.index.hour), axis=1)
Run Code Online (Sandbox Code Playgroud)

但我收到错误信息

AttributeError: ("'Index' object has no attribute 'hour'", u'occurred at index 2015-09-25 01:00:00')
Run Code Online (Sandbox Code Playgroud)

有人知道怎么做吗?

python apply pandas

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

Python:Pandas系列 - 连续日期时间行之间的差异,以秒为单位

我有一个叫做'df'的熊猫系列如下

                       value    
date_time_index         
2015-10-28 01:54:00     1.0 
2015-10-28 01:55:00     1.0 
2015-10-28 01:56:00     1.0 
2015-10-28 01:57:00     1.0 
2015-10-28 01:58:00     1.0 
Run Code Online (Sandbox Code Playgroud)

我只想要一个新的列,连续行之间的秒数差异,我该怎么做?

注意:类型是

 type(df.index[1])
Run Code Online (Sandbox Code Playgroud)

作为

 pandas.tslib.Timestamp
Run Code Online (Sandbox Code Playgroud)

python datetime seconds pandas difference

5
推荐指数
1
解决办法
3911
查看次数

Python Matplotlib - 带有日期值的 x 轴的平滑绘图线

我试图平滑一条曲线,但由于 x 轴值是日期,我在这样做时遇到了很大的麻烦。假设我们有一个如下的数据框

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline

startDate = '2015-05-15'
endDate = '2015-12-5'
index = pd.date_range(startDate, endDate)
data = np.random.normal(0, 1, size=len(index))
cols = ['value']

df = pd.DataFrame(data, index=index, columns=cols)
Run Code Online (Sandbox Code Playgroud)

然后我们绘制数据

fig, axs = plt.subplots(1,1, figsize=(18,5))
x = df.index
y = df.value
axs.plot(x, y)
fig.show()
Run Code Online (Sandbox Code Playgroud)

我们得到

在此处输入图片说明

现在为了平滑这条线,已经有一些有用的 staekoverflow 问题,例如:

但是对于我的示例,我似乎无法使用一些代码来执行此操作,有什么建议吗?

python smooth date matplotlib pandas

5
推荐指数
1
解决办法
3940
查看次数