标签: pandas

根据列值删除Pandas中的DataFrame行

我有以下DataFrame:

             daysago  line_race rating        rw    wrating
 line_date                                                 
 2007-03-31       62         11     56  1.000000  56.000000
 2007-03-10       83         11     67  1.000000  67.000000
 2007-02-10      111          9     66  1.000000  66.000000
 2007-01-13      139         10     83  0.880678  73.096278
 2006-12-23      160         10     88  0.793033  69.786942
 2006-11-09      204          9     52  0.636655  33.106077
 2006-10-22      222          8     66  0.581946  38.408408
 2006-09-29      245          9     70  0.518825  36.317752
 2006-09-16      258         11     68  0.486226  33.063381
 2006-08-30      275          8     72  0.446667  32.160051
 2006-02-11      475          5     65  0.164591  10.698423
 2006-01-13      504          0     70  0.142409   9.968634
 2006-01-02 …
Run Code Online (Sandbox Code Playgroud)

python pandas

441
推荐指数
12
解决办法
67万
查看次数

将Pandas GroupBy对象转换为DataFrame

我从这样的输入数据开始

df1 = pandas.DataFrame( { 
    "Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] , 
    "City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"] } )
Run Code Online (Sandbox Code Playgroud)

打印时显示如下:

   City     Name
0   Seattle    Alice
1   Seattle      Bob
2  Portland  Mallory
3   Seattle  Mallory
4   Seattle      Bob
5  Portland  Mallory
Run Code Online (Sandbox Code Playgroud)

分组很简单:

g1 = df1.groupby( [ "Name", "City"] ).count()
Run Code Online (Sandbox Code Playgroud)

和打印产生一个GroupBy对象:

                  City  Name
Name    City
Alice   Seattle      1     1
Bob     Seattle      2     2
Mallory Portland     2     2
        Seattle      1     1
Run Code Online (Sandbox Code Playgroud)

但我最终想要的是另一个包含GroupBy对象中所有行的DataFrame对象.换句话说,我希望得到以下结果:

                  City  Name
Name …
Run Code Online (Sandbox Code Playgroud)

python multi-index dataframe pandas pandas-groupby

433
推荐指数
9
解决办法
55万
查看次数

如何检查Pandas DataFrame中的任何值是否为NaN

在Python Pandas中,检查DataFrame是否具有一个(或多个)NaN值的最佳方法是什么?

我知道函数pd.isnan,但是这会为每个元素返回一个布尔数据框架.这篇文章也没有完全回答我的问题.

python nan dataframe pandas

428
推荐指数
14
解决办法
69万
查看次数

Pandas中map,applymap和apply方法之间的区别

你能告诉我什么时候使用这些矢量化方法和基本的例子吗?

我看到这map是一种Series方法,而其余的是DataFrame方法.我对此感到困惑applyapplymap方法.为什么我们有两种方法将函数应用于DataFrame?再一次,说明用法的简单例子会很棒!

python vectorization dataframe pandas

409
推荐指数
9
解决办法
26万
查看次数

将pandas数据帧转换为NumPy数组

我有兴趣知道如何将pandas数据帧转换为NumPy数组.

数据帧:

import numpy as np
import pandas as pd

index = [1, 2, 3, 4, 5, 6, 7]
a = [np.nan, np.nan, np.nan, 0.1, 0.1, 0.1, 0.1]
b = [0.2, np.nan, 0.2, 0.2, 0.2, np.nan, np.nan]
c = [np.nan, 0.5, 0.5, np.nan, 0.5, 0.5, np.nan]
df = pd.DataFrame({'A': a, 'B': b, 'C': c}, index=index)
df = df.rename_axis('ID')
Run Code Online (Sandbox Code Playgroud)

label   A    B    C
ID                                 
1   NaN  0.2  NaN
2   NaN  NaN  0.5
3   NaN  0.2  0.5
4   0.1  0.2  NaN …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy dataframe pandas

400
推荐指数
14
解决办法
81万
查看次数

使用索引为pandas DataFrame中的特定单元格设置值


我已经创建了一个pandas DataFrame

df = DataFrame(index=['A','B','C'], columns=['x','y'])
Run Code Online (Sandbox Code Playgroud)

得到了这个

    x    y
A  NaN  NaN
B  NaN  NaN
C  NaN  NaN


然后我想为特定单元格赋值,例如行'C'和列'x'.我期望得到这样的结果:

    x    y
A  NaN  NaN
B  NaN  NaN
C  10  NaN

使用此代码:

df.xs('C')['x'] = 10
Run Code Online (Sandbox Code Playgroud)

但是df的内容没有改变.在数据帧中它只是Nan的.

有什么建议?

python dataframe pandas

396
推荐指数
17
解决办法
69万
查看次数

在pandas/python中的数据框中组合两列文本

我在使用pandas的python中有一个20 x 4000的数据帧.其中两列名为Year和quarter.我想创建一个名为period的变量,将Year = 2000和quarter = q2变为2000q2

任何人都可以帮忙吗?

python numpy dataframe pandas

395
推荐指数
17
解决办法
60万
查看次数

如何在Pandas数据帧的列中用Zero替换所有NaN值

我有一个数据框如下

      itm Date                  Amount 
67    420 2012-09-30 00:00:00   65211
68    421 2012-09-09 00:00:00   29424
69    421 2012-09-16 00:00:00   29877
70    421 2012-09-23 00:00:00   30990
71    421 2012-09-30 00:00:00   61303
72    485 2012-09-09 00:00:00   71781
73    485 2012-09-16 00:00:00     NaN
74    485 2012-09-23 00:00:00   11072
75    485 2012-09-30 00:00:00  113702
76    489 2012-09-09 00:00:00   64731
77    489 2012-09-16 00:00:00     NaN
Run Code Online (Sandbox Code Playgroud)

当我尝试将一个函数应用于Amount列时,我得到以下错误.

ValueError: cannot convert float NaN to integer
Run Code Online (Sandbox Code Playgroud)

我尝试使用数学模块中的.isnan应用函数我已经尝试过pandas .replace属性我尝试了pandas 0.9中的.sparse数据属性我也尝试过函数中的NaN == NaN语句.我也看过这篇文章如何在R数据帧中用零替换NA值?同时看一些其他文章.我尝试的所有方法都没有工作或者没有认识到NaN.任何提示或解决方案将不胜感激.

python dataframe pandas

393
推荐指数
11
解决办法
69万
查看次数

如何计算pandas DataFrame中列中的NaN值

我有数据,我想在其中找到数量NaN,所以如果它小于某个阈值,我会删除这些列.我看了,但没能找到任何功能.有value_counts,但对我来说会很慢,因为大多数价值观都是不同的,我NaN只想要数.

python dataframe pandas

387
推荐指数
18
解决办法
49万
查看次数

创建一个空的Pandas DataFrame,然后填充它?

我从这里的pandas DataFrame文档开始:http://pandas.pydata.org/pandas-docs/stable/dsintro.html

我想迭代地使用时间序列计算中的值填充DataFrame.基本上,我想用列A,B和时间戳行初始化DataFrame,全部为0或全部为NaN.

然后,我会添加初始值并检查此数据,计算前一行中的新行,row[A][t] = row[A][t-1]+1或者说左右.

我目前正在使用下面的代码,但我觉得它有点难看,必须有一种方法可以直接使用DataFrame,或者只是更好的方式.注意:我使用的是Python 2.7.

import datetime as dt
import pandas as pd
import scipy as s

if __name__ == '__main__':
    base = dt.datetime.today().date()
    dates = [ base - dt.timedelta(days=x) for x in range(0,10) ]
    dates.sort()

    valdict = {}
    symbols = ['A','B', 'C']
    for symb in symbols:
        valdict[symb] = pd.Series( s.zeros( len(dates)), dates )

    for thedate in dates:
        if thedate > dates[0]:
            for symb in valdict:
                valdict[symb][thedate] = 1+valdict[symb][thedate - dt.timedelta(days=1)]

    print valdict
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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