小编cs9*_*s95的帖子

Pandas将FutureWarning切成0.21.0

我正在尝试选择数据帧子集的子集,仅选择一些列,并对行进行过滤.

df.loc[df.a.isin(['Apple', 'Pear', 'Mango']), ['a', 'b', 'f', 'g']]
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

Passing list-likes to .loc or [] with any missing label will raise
KeyError in the future, you can use .reindex() as an alternative.
Run Code Online (Sandbox Code Playgroud)

现在切片和过滤的正确方法是什么?

python filter slice pandas

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

有效地访问任意深度的词典

假设我有一个像这样的多级字典

mydict = {
    'first': {
        'second': {
            'third': {
                'fourth': 'the end'
             }
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

我想像这样访问它

test = get_entry(mydict, 'first.second.third.fourth')
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是什么

def get_entry(dict, keyspec):
    keys = keyspec.split('.')

    result = dict[keys[0]]
    for key in keys[1:]:
       result = dict[key]

    return result
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?根据%timeit,函数的运行时间是1.26us,而访问字典的标准方式是这样的

foo = mydict['first']['second']['third']['fourth']
Run Code Online (Sandbox Code Playgroud)

需要541ns.如果可能的话,我正在寻找将其修剪到800ns范围的方法.

谢谢

python recursion dictionary python-2.7

29
推荐指数
4
解决办法
821
查看次数

如何使用条件索引获取单元格上的标量值

我有如下所示的数据框.我需要获取B列的标量值,这取决于A的值(这是我脚本中的变量).我正在尝试loc()函数,但它返回一个Series而不是标量值.如何获得标量值()?

>>> x = pd.DataFrame({'A' : [0,1,2], 'B' : [4,5,6]})
>>> x
   A  B
0  0  4
1  1  5
2  2  6

>>> x.loc[x['A'] == 2]['B']
2    6
Name: B, dtype: int64

>>> type(x.loc[x['A'] == 2]['B'])
<class 'pandas.core.series.Series'>
Run Code Online (Sandbox Code Playgroud)

python pandas

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

日期时间转换 - 如何提取推断格式?

这是一组日期时间值:

array = np.array(['2016-05-01T00:00:59.3+10:00', '2016-05-01T00:02:59.4+10:00',
                  '2016-05-01T00:03:59.4+10:00', '2016-05-01T00:13:00.1+10:00',
                  '2016-05-01T00:22:00.5+10:00', '2016-05-01T00:31:01.1+10:00'],
        dtype=object)
Run Code Online (Sandbox Code Playgroud)

pd.to_datetime 非常擅长推断日期时间格式.

array = pd.to_datetime(array)

print(array)
DatetimeIndex(['2016-04-30 14:00:59.300000', '2016-04-30 14:02:59.400000',
               '2016-04-30 14:03:59.400000', '2016-04-30 14:13:00.100000',
               '2016-04-30 14:22:00.500000', '2016-04-30 14:31:01.100000'],
              dtype='datetime64[ns]', freq=None)
Run Code Online (Sandbox Code Playgroud)

如何动态确定pd.to_datetime推断出的日期时间格式?有点像:( %Y-%m-%dT...抱歉,我的约会时间非常糟糕).

python datetime pandas

28
推荐指数
3
解决办法
2128
查看次数

如何将NULL视为带有pandas的普通字符串?

我有一个带有字符串的列的csv文件,我想用pandas读取它.在此文件中,字符串null作为实际值出现,不应视为缺失值.

例:

import pandas as pd
from io import StringIO

data = u'strings,numbers\nfoo,1\nbar,2\nnull,3'
print(pd.read_csv(StringIO(data)))
Run Code Online (Sandbox Code Playgroud)

这给出了以下输出:

  strings  numbers
0     foo        1
1     bar        2
2     NaN        3
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能将数值null(而不是NaN)纳入DataFrame?可以假定该文件不包含任何实际缺失的值.

python csv string dataframe pandas

28
推荐指数
3
解决办法
4090
查看次数

重置列的MultiIndex级别

是否有一种更短的方法来删除列MultiIndex级别(在我的情况下basic_amt),除了转换它两次?

In [704]: test
Out[704]: 
           basic_amt               
Faculty          NSW  QLD  VIC  All
All                1    1    2    4
Full Time          0    1    0    1
Part Time          1    0    2    3

In [705]: test.reset_index(level=0, drop=True)
Out[705]: 
         basic_amt               
Faculty        NSW  QLD  VIC  All
0                1    1    2    4
1                0    1    0    1
2                1    0    2    3

In [711]: test.transpose().reset_index(level=0, drop=True).transpose()
Out[711]: 
Faculty    NSW  QLD  VIC  All
All          1    1    2    4
Full Time    0    1    0    1
Part Time    1 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

熊猫:在groupby之后对每组进行抽样

我知道这肯定已经回答了一些地方,但我找不到它.

问题:在groupby操作后对每个组进行采样.

import pandas as pd

df = pd.DataFrame({'a': [1,2,3,4,5,6,7],
                   'b': [1,1,1,0,0,0,0]})

grouped = df.groupby('b')

# now sample from each group, e.g., I want 30% of each group
Run Code Online (Sandbox Code Playgroud)

python random group-by pandas pandas-groupby

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

大熊猫一周一周

我有这个数据框:

Name   Date    Quantity
Apple  07/11/17  20
orange 07/14/17  20
Apple  07/14/17  70
Orange 07/25/17  40
Apple  07/20/17  30
Run Code Online (Sandbox Code Playgroud)

我想通过名称和日期汇总这个以获得数量总和详细信息:

日期:分组,结果应该在一周的开头(或者只是在星期一)

数量:总和,如果两个或多个记录具有相同的名称和日期(如果是相同的间隔)

所需的输出如下:

Name   Date    Quantity
Apple  07/10/17  90
orange 07/10/17  20
Apple  07/17/17  30
orange 07/24/17  40
Run Code Online (Sandbox Code Playgroud)

提前致谢

python pandas

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

强制pandas .iloc返回单行数据帧?

出于编程目的,我希望.iloc始终返回数据帧,即使结果数据帧只有一行.怎么做到这一点?

目前,.iloc当结果只有一行时返回一个Series.例:

In [1]: df = pd.DataFrame({'a':[1,2], 'b':[3,4]})

In [2]: df
Out[2]:
   a  b
0  1  3
1  2  4

In [3]: type(df.iloc[0, :])
Out[3]: pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud)

由于两个原因,此行为很差:

  • 根据所选行的数量,.iloc可以返回一个系列或一个数据框,迫使我在我的代码中手动检查这一点

- .loc另一方面,总是返回一个数据框,使其pandas内部不一致(错误的信息,如评论中所指出的)

对于R用户,可以使用drop = FALSE或使用tidyverse的tibble 来完成,tidyverse的tibble默认情况下始终返回数据帧.

python indexing dataframe pandas

26
推荐指数
3
解决办法
8362
查看次数

如何为函数实现__str__?

给定一个功能foo:

def foo(x):
     pass
Run Code Online (Sandbox Code Playgroud)

通过调用strrepr给你一些像这样无聊的东西打印它的表示:

str(foo)
'<function foo at 0x119e0c8c8>'
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以覆盖函数的__str__方法来打印其他东西.基本上,我想做:

str(foo)
"I'm foo!'
Run Code Online (Sandbox Code Playgroud)

现在,我明白函数的描述应该来自__doc__函数的docstring.然而,这仅仅是一个实验.

在试图找出一个解决这个问题,我碰到来实现__str__classes:如何定义一个类__str__方法?

这种方法涉及使用__str__方法定义元类,然后尝试__metaclass__在实际类中分配钩子.

我想知道是否可以对班级做同样的事情function,所以这就是我试过的 -

In [355]: foo.__class__
Out[355]: function

In [356]: class fancyfunction(type):
     ...:     def __str__(self):
     ...:         return self.__name__
     ...:     

In [357]: foo.__class__.__metaclass__ = fancyfunction
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Run Code Online (Sandbox Code Playgroud)

我认为它不会起作用,但值得一试!

那么,实现__str__函数的最佳方法是什么?

python function

26
推荐指数
2
解决办法
2802
查看次数