小编JJ *_*ica的帖子

在DataFrame pandas中添加日期之间的天数列

我想从'B'中的日期中减去'A'中的日期,并添加一个带有差异的新列.

df
          A        B
one 2014-01-01  2014-02-28 
two 2014-02-03  2014-03-01
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容,但是当我尝试将其包含在for循环中时出现错误...

import datetime
date1=df['A'][0]
date2=df['B'][0]
mdate1 = datetime.datetime.strptime(date1, "%Y-%m-%d").date()
rdate1 = datetime.datetime.strptime(date2, "%Y-%m-%d").date()
delta =  (mdate1 - rdate1).days
print delta
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

python date-difference pandas

74
推荐指数
3
解决办法
10万
查看次数

如何从Pandas DataFrame标头中删除空格?

我正在解析Excel文件中的数据,该文件在某些​​列标题中有额外的空白区域.

当我检查结果数据帧的列时,如下所示:

df.columns

结果如下:

Index(['Year', 'Month ', 'Value'])

因此,我无法逃避

df["Month"]

因为它会告诉我找不到列,因为我要求"月",而不是"月".

那么,我的问题是如何从列标题中删除不需要的空白区域?

python pandas

68
推荐指数
3
解决办法
5万
查看次数

Pandas中的示例数据集

使用R时,使用它可以方便地加载"练习"数据集

data(iris)
Run Code Online (Sandbox Code Playgroud)

要么

data(mtcars)
Run Code Online (Sandbox Code Playgroud)

熊猫有类似的东西吗?我知道我可以使用任何其他方法加载,只是好奇是否内置任何东西

python pandas

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

如何为size()列指定名称?

我在groupby结果上使用.size()来计算每个组中有多少项.

我希望将结果保存到新的列名而无需手动编辑列名数组,如何才能完成?

谢谢

这是我尝试过的:

grpd = df.groupby(['A','B'])
grpd['size'] = grpd.size()
grpd
Run Code Online (Sandbox Code Playgroud)

和我得到的错误:

TypeError:'DataFrameGroupBy'对象不支持项目分配(在第二行)

python pandas

49
推荐指数
4
解决办法
3万
查看次数

ImportError HDFStore需要PyTables没有名为tables的模块

import pandas as pd
dfs = pd.HDFStore('xxxxx.h5')
Run Code Online (Sandbox Code Playgroud)

抛出此错误:

"ImportError: HDFStore requires PyTables, "No module named tables" problem importing"

我试图安装PyTables,需要Cython.我安装了Cython 0.21,但它抛出了一个错误,说明Cython应该大于0.13

这是我得到的日志:

".. ERROR:: You need Cython 0.13 or greater to compile PyTables!

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /private/tmp/pip_build_root/tables
Storing debug log for failure in /Users/nikhilsahai/Library/Logs/pip.log
Nikhils-MacBook-Pro:~ nikhilsahai$ sudo pip install cython
Requirement already satisfied (use --upgrade to upgrade): cython in /Library/Python/2.7/site-packages/Cython-0.21-py2.7-macosx-10.9-intel.egg
Cleaning up..."
Run Code Online (Sandbox Code Playgroud)

请指导我如何解决这个问题.

python hdf5 pandas

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

鉴于大熊猫系列代表一个值的频率,我怎样才能将这些频率转换为百分比?

我正在试验kaggle.com泰坦尼克号数据集(泰坦尼克号上每个人的数据),并想出了这样的性别分类:

gender = df.sex.value_counts()
gender

male   577
female 314 
Run Code Online (Sandbox Code Playgroud)

我想知道泰坦尼克号上每个性别的百分比.

我的方法略逊于理想:

from __future__ import division
pcts = gender / gender.sum()
pcts

male      0.647587
female    0.352413
Run Code Online (Sandbox Code Playgroud)

有更好的(更惯用的)方式吗?

谢谢!

python pandas

46
推荐指数
4
解决办法
3万
查看次数

从MultiIndex中的索引列获取唯一值

我知道我可以DataFrame通过重置索引来获取a的唯一值,但有没有办法避免这一步并直接获得唯一值?

鉴于我有:

        C
 A B     
 0 one  3
 1 one  2
 2 two  1
Run Code Online (Sandbox Code Playgroud)

我可以:

df = df.reset_index()
uniq_b = df.B.unique()
df = df.set_index(['A','B'])
Run Code Online (Sandbox Code Playgroud)

大熊猫有没有办法做到这一点?

python pandas

43
推荐指数
3
解决办法
4万
查看次数

如何使用pandas数据帧创建滞后数据结构

s=pd.Series([5,4,3,2,1], index=[1,2,3,4,5])
print s 
1    5
2    4
3    3
4    2
5    1
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方法来创建一个系列.例如,在每一行中包含滞后值(在此示例中最多滞后2)

3    [3, 4, 5]
4    [2, 3, 4]
5    [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

这相当于s = pd.Series([[3,4,5],[2,3,4],[1,2,3]],index = [3,4,5])

对于具有很长时间序列的数据帧,如何以高效的方式完成这项工作?

谢谢

看到答案后编辑

好的,最后我实现了这个功能:

def buildLaggedFeatures(s,lag=2,dropna=True):
'''
Builds a new DataFrame to facilitate regressing over all possible lagged features
'''
if type(s) is pd.DataFrame:
    new_dict={}
    for col_name in s:
        new_dict[col_name]=s[col_name]
        # create lagged Series
        for l in range(1,lag+1):
            new_dict['%s_lag%d' %(col_name,l)]=s[col_name].shift(l)
    res=pd.DataFrame(new_dict,index=s.index)

elif type(s) is pd.Series:
    the_range=range(lag+1) …
Run Code Online (Sandbox Code Playgroud)

python pandas

36
推荐指数
5
解决办法
3万
查看次数

如何在pandas中使用group by时将"first"和"last"函数应用于列?

我有一个数据框,我想按特定列(或换句话说,来自特定列的值)对其进行分组.我可以通过以下方式完成:grouped = df.groupby(['ColumnName']).

我把这个操作的结果想象成一个表,其中一些单元格可以包含多组值而不是单个值.为了得到一个通常的表(即每个单元格只包含一个单个值的表),我需要指出我想用什么函数将单元格中的值集转换为单个值.

例如,我可以用它们的总和或它们的最小值或最大值来替换值集.我可以通过以下方式完成:grouped.sum()或者grouped.min()依此类推.

现在我想为不同的列使用不同的函数.我发现我可以通过以下方式实现:grouped.agg({'ColumnName1':sum, 'ColumnName2':min}).

但是,由于某些原因我无法使用first.更多细节,grouped.first()作品,但grouped.agg({'ColumnName1':first, 'ColumnName2':first})不起作用.结果我得到一个NameError : NameError: name 'first' is not defined. 所以,我的问题是:为什么会发生以及如何解决这个问题.

添加

在这里,我找到了以下示例:

grouped['D'].agg({'result1' : np.sum, 'result2' : np.mean})
Run Code Online (Sandbox Code Playgroud)

可能我还需要使用np?但在我的情况下,python不识别"np".我应该导入吗?

python group-by pandas

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

在几个DataFrame列上运行get_dummies?

如何get_dummies在多个DataFrame列上以惯用方式运行一个函数,它需要单个列并返回多个列?

python dataframe pandas one-hot-encoding

33
推荐指数
3
解决办法
5万
查看次数