对于这个似乎重复的问题我很抱歉 - 我希望答案会让我觉得自己像个傻瓜......但是我没有运气使用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 pandasRun Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有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)
谢谢。
我正在尝试创建一个列("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)
我看到其他帖子使用分组或排序,但不幸的是,我看不出这对我有用.在此先感谢您的帮助.
我想对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) 我有一个仅包含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)尝试从现有列的内容创建新的数据框列.用例子更容易解释.我想转换这个:
. 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)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']与块值进行比较
在此先感谢您的帮助.