小编Yar*_*riv的帖子

如何将pandas DataFrame的第一列作为一个系列?

我试过了:

x=pandas.DataFrame(...)
s = x.take([0], axis=1)
Run Code Online (Sandbox Code Playgroud)

s获得一个DataFrame,而不是一个系列.

python series dataframe pandas

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

如何从多索引数据框中删除级别?

例如,我有:

In [1]: df = pd.DataFrame([8, 9],
                          index=pd.MultiIndex.from_tuples([(1, 1, 1),
                                                           (1, 3, 2)]),
                          columns=['A'])

In [2] df
Out[2]: 
       A
1 1 1  8
  3 2  9
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法从索引中删除最后一个级别:

In [3]: pd.DataFrame(df.values,
                     index=df.index.droplevel(2),
                     columns=df.columns)
Out[3]: 
     A
1 1  8
  3  9
Run Code Online (Sandbox Code Playgroud)

multi-index dataframe pandas

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

Numpy整数南

有没有办法将NaN存储在Numpy整数数组中?我明白了:

a=np.array([1],dtype=long)
a[0]=np.nan

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
Run Code Online (Sandbox Code Playgroud)

python integer numpy nan

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

如何使用pandas查找重复的名称?

我有一个pandas.DataFrame名为name包含字符串的列.我想获得列中不止一次出现的名称列表.我怎么做?

我试过了:

funcs_groups = funcs.groupby(funcs.name)
funcs_groups[(funcs_groups.count().name>1)]
Run Code Online (Sandbox Code Playgroud)

但它并没有过滤出单身人士的名字.

python group-by pandas

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

用于将光标移动到Visual Studio中的最后编辑位置的键盘快捷方式

在Visual Studio中,是否有键盘快捷键导航(移动光标)到最后编辑的位置(如PyCharm的Ctrl+ Shift+ Backspace)?

CTRL+ -shourtcut移动到最后位置(不是最后编辑位置),这是对我来说用处不大.

c# keyboard-shortcuts editor visual-studio

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

如何围绕Pandas`DatetimeIndex`?

我有一个pandas.DatetimeIndex,例如:

pd.date_range('2012-1-1 02:03:04.000',periods=3,freq='1ms')
>>> [2012-01-01 02:03:04, ..., 2012-01-01 02:03:04.002000]
Run Code Online (Sandbox Code Playgroud)

我想将日期舍入Timestamp到最接近的秒.我怎么做?预期结果类似于:

[2012-01-01 02:03:04.000000, ..., 2012-01-01 02:03:04.000000]
Run Code Online (Sandbox Code Playgroud)

是否有可能通过将Numpy四舍五入datetime64[ns]到几秒而不改变dtype [ns]

np.array(['2012-01-02 00:00:00.001'],dtype='datetime64[ns]')
Run Code Online (Sandbox Code Playgroud)

datetime numpy date date-format pandas

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

如何从7z压缩的文本文件中读取?

我想从csv(文本)文件中逐行读取(在Python 2.7中),该文件是7z压缩的.我不想解压缩整个(大)文件,而是要对行进行流式处理.

我尝试pylzma.decompressobj()失败了.我收到数据错误.请注意,此代码尚未逐行读取:

input_filename = r"testing.csv.7z"
with open(input_filename, 'rb') as infile:
    obj = pylzma.decompressobj()
    o = open('decompressed.raw', 'wb')
    obj = pylzma.decompressobj()
    while True:
        tmp = infile.read(1)
        if not tmp: break
        o.write(obj.decompress(tmp))
    o.close()
Run Code Online (Sandbox Code Playgroud)

输出:

    o.write(obj.decompress(tmp))
ValueError: data error during decompression
Run Code Online (Sandbox Code Playgroud)

python 7zip stream python-2.7 py7zlib

12
推荐指数
1
解决办法
7696
查看次数

如何在Python中重定向包含类的所有方法?

如何实现组合模式?我有一个Container具有属性对象的类Contained.我想通过简单地调用来重定向/允许访问所有Contained类的方法.我是否以正确的方式做正确的事情?Containermy_container.some_contained_method()

我使用类似的东西:

class Container:
   def __init__(self):
       self.contained = Contained()
   def __getattr__(self, item):
       if item in self.__dict__: # some overridden
           return self.__dict__[item] 
       else:
           return self.contained.__getattr__(item) # redirection
Run Code Online (Sandbox Code Playgroud)

背景:

我正在尝试构建一个类(Indicator),它增加了现有类(pandas.DataFrame)的功能.Indicator将拥有所有的方法DataFrame.我可以使用继承,但我遵循"赞成组合而不是继承 "的建议(参见例如:python:inheriting或composition中的答案).不继承的一个原因是因为基类不可序列化,我需要序列化.

我发现了这个,但我不确定它是否符合我的需要.

python inheritance composition pandas

11
推荐指数
1
解决办法
4831
查看次数

如何在一系列中找到异常值,进行矢量化?

我有一只大熊猫.正数系列.我需要找到"异常值"的索引,其值离开3前一个"规范"或更多.

如何向量化此功能:

def baseline(s):
    values = []
    indexes = []
    last_valid = s.iloc[0]
    for idx, val in s.iteritems():
        if abs(val - last_valid) >= 3:
            values.append(val)
            indexes.append(idx)
        else:
            last_valid = val
    return pd.Series(values, index=indexes)
Run Code Online (Sandbox Code Playgroud)

例如,如果输入是:

import pandas as pd
s = pd.Series([7,8,9,10,14,10,10,14,100,14,10])
print baseline(s)
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

4     14
7     14
8    100
9     14
Run Code Online (Sandbox Code Playgroud)

请注意,s 10之后的值14不会返回,因为它们是"恢复正常"值.

编辑:

  • 添加abs()到代码中.数字是积极的.
  • 这里的目的是加速代码.
  • 一个不完全模仿代码的答案可能是可以接受的.
  • 更改示例以包含另一个边缘大小写,其中值缓慢变化3.

python numpy vectorization pandas

10
推荐指数
1
解决办法
857
查看次数

检查inside方法是否传递了一些可选参数

如何检查是否将可选参数传递给方法?

public void ExampleMethod(int required, string optionalstr = "default string",
    int optionalint = 10)
{

    if (optionalint was passed)
       return;
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用Nullable<T>.HasValue(MSDN定义,MSDN示例):

int default_optionalint = 0;

public void ExampleMethod(int required, int? optionalint,
                            string optionalstr = "default string")
{
    int _optionalint = optionalint ?? default_optionalint;
}
Run Code Online (Sandbox Code Playgroud)

c# nullable optional-parameters argument-passing

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