相关疑难解决方法(0)

创建一个空的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万
查看次数

熊猫合并101

  • 如何用pandas 执行(LEFT| RIGHT| FULL)(INNER| OUTER)连接?
  • 合并后如何为缺失的行添加NaN?
  • 合并后如何摆脱NaN?
  • 我可以合并索引吗?
  • 如何合并多个DataFrame?
  • mergejoinconcatupdate?谁?什么?为什么?!

... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.

这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).

请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.

python merge join pandas

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

JSON到pandas DataFrame

我想要做的是沿着纬度和经度坐标指定的路径从谷歌地图API中提取高程数据,如下所示:

from urllib2 import Request, urlopen
import json

path1 = '42.974049,-81.205203|42.974298,-81.195755'
request=Request('http://maps.googleapis.com/maps/api/elevation/json?locations='+path1+'&sensor=false')
response = urlopen(request)
elevations = response.read()
Run Code Online (Sandbox Code Playgroud)

这给了我一个如下所示的数据:

elevations.splitlines()

['{',
 '   "results" : [',
 '      {',
 '         "elevation" : 243.3462677001953,',
 '         "location" : {',
 '            "lat" : 42.974049,',
 '            "lng" : -81.205203',
 '         },',
 '         "resolution" : 19.08790397644043',
 '      },',
 '      {',
 '         "elevation" : 244.1318664550781,',
 '         "location" : {',
 '            "lat" : 42.974298,',
 '            "lng" : -81.19575500000001',
 '         },',
 '         "resolution" : 19.08790397644043',
 '      }',
 '   ],',
 ' …
Run Code Online (Sandbox Code Playgroud)

python json google-maps pandas

112
推荐指数
8
解决办法
28万
查看次数

从嵌套字典中的项构造pandas DataFrame

假设我有一个带结构的嵌套字典'user_dict':

第1级: UserId(长整数)

第2级:类别(字符串)

第3级:各种属性(浮点数,整数等)

例如,这个字典的条目是:

user_dict[12] = {
    "Category 1": {"att_1": 1, 
                   "att_2": "whatever"},
    "Category 2": {"att_1": 23, 
                   "att_2": "another"}}
Run Code Online (Sandbox Code Playgroud)

"user_dict"中的每个项目具有相同的结构,"user_dict"包含大量项目,我想将这些项目提供给pandas DataFrame,从属性构建系列.在这种情况下,分层索引对于此目的是有用的.

具体来说,我的问题是,是否存在一种方法来帮助DataFrame构造函数理解该系列应该是从字典中"级别3"的值构建的?

如果我尝试类似的东西:

df = pandas.DataFrame(users_summary)
Run Code Online (Sandbox Code Playgroud)

"级别1"(用户ID)中的项目被视为列,这与我想要实现的目标相反(将用户ID作为索引).

我知道我可以在迭代字典条目后构建系列,但如果有更直接的方法,这将非常有用.类似的问题是询问是否可以从文件中列出的json对象构造pandas DataFrame.

python dataframe pandas

65
推荐指数
7
解决办法
7万
查看次数

如何在for循环中的pandas数据框中追加行?

我有以下for循环:

for i in links:
     data = urllib2.urlopen(str(i)).read()
     data = json.loads(data)
     data = pd.DataFrame(data.items())
     data = data.transpose()
     data.columns = data.iloc[0]
     data = data.drop(data.index[[0]])
Run Code Online (Sandbox Code Playgroud)

如此创建的每个数据框都有大多数列与其他列相同但不是全部.而且,他们都只有一排.我需要的是向数据帧中添加for循环生成的每个数据帧中的所有不同列和每一行

我尝试过连接或类似的熊猫,但似乎没有任何效果.任何的想法?谢谢.

python for-loop dataframe pandas

54
推荐指数
3
解决办法
19万
查看次数

从多个dicts创建一个pandas DataFrame

我是pandas的新手,这是我在stackoverflow上的第一个问题,我正在尝试用熊猫做一些分析.

我有一些文本文件包含我想要处理的数据记录.文件的每一行与记录匹配,哪些字段在固定的位置并且具有固定数量的字符的长度.同一文件中有不同种类的记录,所有记录共享第一个字段,这两个字符取决于记录类型.举个例子:

Some file:
01Jhon      Smith     555-1234                                        
03Cow            Bos primigenius taurus        00401                  
01Jannette  Jhonson           00100000000                             
...


field    start  length   
type         1       2   *common to all records, example: 01 = person, 03 = animal
name         3      10
surname     13      10
phone       23       8
credit      31      11
fill of spaces
Run Code Online (Sandbox Code Playgroud)

我正在编写一些代码来将一条记录转换为字典:

person1 = {'type': 01, 'name': = 'Jhon', 'surname': = 'Smith', 'phone': '555-1234'}
person2 = {'type': 01, 'name': 'Jannette', 'surname': 'Jhonson', 'credit': 1000000.00}
animal1 = {'type': 03, 'cname': 'cow', 'sciname': 'Bos....', 'legs': …
Run Code Online (Sandbox Code Playgroud)

pandas

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

从字典创建Python DataFrame,其中键是列名称,值是行的值

我熟悉python但对panda DataFrames来说是新手.我有一个这样的字典:

a={'b':100,'c':300}
Run Code Online (Sandbox Code Playgroud)

我想将其转换为DataFrame,其中b和c是列名,第一行是100,300(100位于b下方,300位于c下方).我想要一个可以推广到更长字典的解决方案,还有更多项目.谢谢!

python dictionary pandas

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

将具有值列表的字典转换为数据框

说我有三本字典

dictionary_col2
{'MOB': [1, 2], 'ASP': [1, 2], 'YIP': [1, 2]}
Run Code Online (Sandbox Code Playgroud)
 dictionary_col3

{'MOB': ['MOB_L001_R1_001.gz',
         'MOB_L002_R1_001.gz'],
 'ASP': ['ASP_L001_R1_001.gz',
         'ASP_L002_R1_001.gz'],
 'YIP': ['YIP_L001_R1_001.gz',
         'YIP_L002_R1_001.gz']}

Run Code Online (Sandbox Code Playgroud)
dictionary_col4

{'MOB': ['MOB_L001_R2_001.gz',
         'MOB_L002_R2_001.gz'],
 'ASP': ['ASP_L001_R2_001.gz',
         'ASP_L002_R2_001.gz'],
 'YIP': ['YIP_L001_R2_001.gz',
         'YIP_L002_R2_001.gz']}

Run Code Online (Sandbox Code Playgroud)

我想将上述字典转换为数据框。我尝试了以下方法

df = pd.DataFrame([dictionary_col2, dictionary_col3, dictionary_col4])df数据帧的样子,

                ASP MOB YIP
0   [1, 2]  [1, 2]  [1, 2]
1   [ASP_L001_R1_001.gz, ASP_L002_R1_001.gz]    [MOB_L001_R1_001.gz, MOB_L002_R1_001.gz]    [YIP_L001_R1_001.gz, YIP_L002_R1_001.gz]
2   [ASP_L001_R2_001.gz, ASP_L002_R2_001.gz]    [MOB_L001_R2_001.gz, MOB_L002_R2_001.gz]    [YIP_L001_R2_001.gz, YIP_L002_R2_001.gz]
Run Code Online (Sandbox Code Playgroud)

我的目标是建立一个包含以下各列的数据框:

    col1  col2 col3              col4 
    MOB   1   MOB_L001_R1_001.gz MOB_L001_R2_001.gz      
    MOB   2   MOB_L002_R1_001.gz MOB_L002_R2_001.gz 
    ASP   1   ASP_L001_R1_001.gz …
Run Code Online (Sandbox Code Playgroud)

python dictionary pandas

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

将字典列表转换为numpy矩阵?

让给定的字典是

d = [{'a':1,'b':4},{'b':2}]
Run Code Online (Sandbox Code Playgroud)

所以基本上我想要一个这样的矩阵

  | 'a' | 'b'  |
 _______________
  |  1  |  4   |
  |  na |  2   |
Run Code Online (Sandbox Code Playgroud)

如何有效地做到这一点?

python numpy pandas

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

根据每个列表第一个元素从列表列表中删除项目

鉴于:

a = [[1,2],[3,4],[5,6],[7,8]]
b = 3
Run Code Online (Sandbox Code Playgroud)

我想删除一个项目a,b因为它是第一个项目.所以在这种情况下我们会删除[3,4]给:

a = [[1,2],[5,6],[7,8]]
Run Code Online (Sandbox Code Playgroud)

我目前的代码是:

if b in [i[0] for i in a]:
    pos = [i[0] for i in a].index(b)
       del a[pos]
Run Code Online (Sandbox Code Playgroud)

这有效,但很慢.有什么更好的方法呢?

编辑:我之前没有测试过性能,所以我可能做错了但是我得到了这个:

def fun1():
    lst = [[x, 2*x] for x in range(1000000)]
    lst = [x for x in lst if x[0] != 500]
    return lst

def fun2():
    lst = [[x, 2*x] for x in range(1000000)]
    for i in reversed(range(len(lst))):
        if lst[i][0] == 500:
            del lst[i] …
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

5
推荐指数
2
解决办法
1344
查看次数

如何从 pandas DataFrame 中创建字典列表?

我想尝试建立一个包含特定词典的列表。我希望结构类似于以下内容:

\n\n
[{'label': 'Abdelnaby, Alaa', 'value': '76001'},\n{'label': 'Abdul-Aziz, Zaid', 'value': '76002'},\n{'label': 'Abdul-Jabbar, Kareem', 'value': '76003'}]\n
Run Code Online (Sandbox Code Playgroud)\n\n

目前,我从中提取的数据位于 pandas 数据框中。下面的例子...

\n\n
PlayerID    Name     Current Player First Season    Last Season\n76001   Abdelnaby, Alaa       0     1990            1994\n76002   Abdul-Aziz, Zaid      0     1968            1977\n76003   Abdul-Jabbar, Kareem  0     1969            1988\n51      Abdul-Rauf, Mahmoud   0     1990            2000\n1505    Abdul-Wahad, Tariq    0     1997            2003\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果这足够了,请告诉我\xe2\x80\x8b。非常感谢你的帮助!

\n

python dataframe python-3.x pandas

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

将字典列表转换为Dataframe

我正面临一个基本问题,即转换从使用json格式的文本解析列获得的字典列表.以下是数据的简要快照:

[{u'PAGE TYPE': u'used-serp.model.brand.city'},
 {u'BODY TYPE': u'MPV Cars',
  u'ENGINE CAPACITY': u'1461',
  u'FUEL TYPE': u' Diesel',
  u'MODEL NAME': u'Renault Lodgy',
  u'OEM NAME': u'Renault',
  u'PAGE TYPE': u'New-ModelPage.OverviewTab'},
 {u'PAGE TYPE': u'used-serp.brand.city'},
 {u'BODY TYPE': u'SUV Cars',
  u'ENGINE CAPACITY': u'2477',
  u'FUEL TYPE': u' Diesel',
  u'MODEL NAME': u'Mitsubishi Pajero',
  u'OEM NAME': u'Mitsubishi',
  u'PAGE TYPE': u'New-ModelPage.OverviewTab'},
 {u'BODY TYPE': u'Hatchback Cars',
  u'ENGINE CAPACITY': u'1198',
  u'FUEL TYPE': u' Petrol , Diesel',
  u'MODEL NAME': u'Volkswagen Polo',
  u'OEM NAME': u'Volkswagen',
  u'PAGE TYPE': u'New-ModelPage.GalleryTab'},
Run Code Online (Sandbox Code Playgroud)

此外,我用来解析的代码详述如下:

stdf_noncookie = []
stdf_noncookiejson = []

for …
Run Code Online (Sandbox Code Playgroud)

python json dictionary list pandas

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

标签 统计

pandas ×11

python ×11

dataframe ×4

dictionary ×3

json ×2

list ×2

python-3.x ×2

for-loop ×1

google-maps ×1

join ×1

merge ×1

numpy ×1