小编MJS*_*MJS的帖子

python pandas从datetime中提取年份--- df ['year'] = df ['date'].年份不起作用

对于这个似乎重复的问题我很抱歉 - 我希望答案会让我觉得自己像个傻瓜......但是我没有运气使用SO上类似问题的答案.

我正在导入数据read_csv,但由于某些我无法弄清楚的原因,我无法从数据帧系列中提取年份或月份df['date'].

date    Count
6/30/2010   525
7/30/2010   136
8/31/2010   125
9/30/2010   84
10/29/2010  4469

df = pd.read_csv('sample_data.csv',parse_dates=True)

df['date'] = pd.to_datetime(df['date'])

df['year'] = df['date'].year
df['month'] = df['date'].month
Run Code Online (Sandbox Code Playgroud)

但这回归:

AttributeError:'Series'对象没有属性'year'

提前致谢.

更新:

df = pd.read_csv('sample_data.csv',parse_dates=True)

df['date'] = pd.to_datetime(df['date'])

df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
Run Code Online (Sandbox Code Playgroud)

这会生成相同的"AttributeError:'Series'对象没有属性'dt'"

跟进:

我使用Spyder 2.3.1和Python 3.4.1 64位,但无法将pandas更新到更新的版本(目前在0.14.1上).以下每个都会生成无效的语法错误:

conda update pandas

conda install pandas==0.15.2

conda install -f pandas
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python datetime extract dataframe pandas

56
推荐指数
4
解决办法
10万
查看次数

使用整个数据框对值进行分组操作

我有2个这样的数据框...

np.random.seed(0)
a = pd.DataFrame(np.random.randn(20,3))
b = pd.DataFrame(np.random.randint(1,5,size=(20,3)))
Run Code Online (Sandbox Code Playgroud)

我想找到中a的4个组的平均值b

这个...

a[b==1].sum().sum() / a[b==1].count().sum()
Run Code Online (Sandbox Code Playgroud)

...一次可以做一组,但我想知道是否有人可以想到一种更清洁的方法。

我的预期结果是

1   -0.088715
2   -0.340043
3   -0.045596
4    0.582136
dtype: float64
Run Code Online (Sandbox Code Playgroud)

谢谢。

python group-by pandas pandas-groupby

10
推荐指数
2
解决办法
189
查看次数

python pandas - 创建一个保持连续值的运行计数的列

我正在尝试创建一个列("consec"),它将在不使用循环的情况下在另一个("二进制")中保持连续值的运行计数.这就是期望的结果:

.    binary consec
1       0      0
2       1      1
3       1      2
4       1      3
5       1      4
5       0      0
6       1      1
7       1      2
8       0      0
Run Code Online (Sandbox Code Playgroud)

但是,这......

df['consec'][df['binary']==1] = df['consec'].shift(1) + df['binary']
Run Code Online (Sandbox Code Playgroud)

导致这...

.  binary   consec
0     1       NaN
1     1       1
2     1       1
3     0       0
4     1       1
5     0       0
6     1       1
7     1       1
8     1       1
9     0       0
Run Code Online (Sandbox Code Playgroud)

我看到其他帖子使用分组或排序,但不幸的是,我看不出这对我有用.在此先感谢您的帮助.

python vectorization dataframe pandas

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

如何在python / pandas中复制Excel COUNTIFS?

我想对df ['A']中的前5个值中的#进行计数,这些值<df ['A']中的当前值并且也> = df2 ['A']。我试图避免循环遍历每一行和每一列,因为我想将此应用于更大的数据集。

鉴于这种...

list1 = [[21,101],[22,110],[25,113],[24,112],[21,109],[28,108],[30,102],[26,106],[25,111],[24,110]]
df = pd.DataFrame(list1,index=pd.date_range('2000-1-1',periods=10, freq='D'), columns=list('AB'))
df2 = pd.DataFrame(df * (1-.05))
Run Code Online (Sandbox Code Playgroud)

我想返回这个(在Excel中使用COUNTIFS解决)...

在此处输入图片说明

下面的线达到了第一部分(感谢Alexander),并且Divakar和DSM也在之前(这里这里)进行了权衡。

df3 = pd.DataFrame(df.rolling(center=False,window=6).apply(lambda rollwin: sum((rollwin[:-1] < rollwin[-1]))))
Run Code Online (Sandbox Code Playgroud)

但是我无法将比较添加到df2中。请帮忙。

跟进10/27/16:

我该如何将上述lambda编写为标准函数?

16/10/28:

参见下文,从df和df2中获取col'A',我试图计算df ['A']的前5个值中有多少落在当前df2 ['A']和df ['A']之间。换句话说,从每个橙色框中有多少个落在黄色低-高范围之间?

在此处输入图片说明

更新:不同的list1数据产生不正确的df3 ...

list1 = [[21,101],[22,110],[25,113],[24,112],[21,109],[26,108],[25,102],[26,106],[25,111],[22,110]]
df = pd.DataFrame(list1,index=pd.date_range('2000-1-1',periods=10, freq='D'), columns=list('AB'))
df2 = pd.DataFrame(df * (1-.05))

df3 = pd.DataFrame(
     df.rolling(center=False,window=6).apply(
          lambda rollwin: pd.Series(rollwin[:-1]).between(rollwin[-1]*0.95,rollwin[-1]).sum()))

df
Out[9]: 
             A    B
2000-01-01  21  101
2000-01-02  22  110
2000-01-03  25  113
2000-01-04  24  112
2000-01-05 …
Run Code Online (Sandbox Code Playgroud)

python boolean countif dataframe pandas

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

跨列的python pandas条件计数

我有一个仅包含1、0和-1的数据框(称为panel [xyz])。尺寸为:行0:10和列a:j。

我想创建另一个具有相同垂直轴但只有3列的数据框(df):col_1 =计算所有非零值(1s和-1s)col_2 =计算所有1s col_3 =计算所有-1s

我在搜索中发现了这一点:

df[col_1] = (pan[xyz]['a','b','c','d','e'] > 0).count(axis=1)
Run Code Online (Sandbox Code Playgroud)

...并尝试了许多不同的迭代,但是我无法获得条件(> 0)来区分pan [xyz]中的不同值。该计数始终= 5。

任何帮助将非常感激。

编辑:

pan [xyz] =

.	'a'	'b'	'c'	'd'	'e'	'f'	'g'	'h'	'i'	'j'
0	1	0	0	-1	0	0	-1	0	1	0
1	0	1	0	0	0	1	0	0	0	-1
2	1	0	0	0	0	-1	0	0	0	0
3	0	-1	0	0	0	0	0	1	0	0
4	0	0 …
Run Code Online (Sandbox Code Playgroud)

python conditional vectorization dataframe pandas

4
推荐指数
1
解决办法
6667
查看次数

Python pandas通过对现有列进行分组来创建其他数据帧列

尝试从现有列的内容创建新的数据框列.用例子更容易解释.我想转换这个:

.	Yr	Month	Class	Cost
1	2015	1	L	19.2361
2	2015	1	M	29.4723
3	2015	1	S	48.5980
4	2015	1	T	169.7630
5	2015	2	L	19.1506
6	2015	2	M	30.0886
7	2015	2	S	49.3765
8	2015	2	T	167.0000
9	2015	3	L	19.3465
10	2015	3	M	29.1991
11	2015	3	S	46.2580
12	2015	3	T	157.7916
13	2015	4	L	18.3165
14	2015	4	M	28.2314
15	2015	4	S …
Run Code Online (Sandbox Code Playgroud)

python merge group-by filter pandas

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

Python pandas correlation corr()TypeError:无法将['pearson']与块值进行比较

one = pd.DataFrame(data=[1,2,3,4,5], index=[1,2,3,4,5])

two = pd.DataFrame(data=[5,4,3,2,1], index=[1,2,3,4,5])

one.corr(two)
Run Code Online (Sandbox Code Playgroud)

我认为它应该返回一个浮点数= -1.00,但它产生以下错误:

TypeError:无法将['pearson']与块值进行比较

在此先感谢您的帮助.

python typeerror pearson correlation pandas

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