小编The*_*era的帖子

使用dict重新映射pandas列中的值

我有一个字典,看起来像这样: di = {1: "A", 2: "B"}

我想将它应用于数据帧的"col1"列,类似于:

     col1   col2
0       w      a
1       1      2
2       2    NaN
Run Code Online (Sandbox Code Playgroud)

要得到:

     col1   col2
0       w      a
1       A      2
2       B    NaN
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能做到最好?出于某种原因谷歌搜索与此相关的术语只显示了如何从dicts制作列的链接,反之亦然: - /

python dictionary remap pandas

260
推荐指数
6
解决办法
21万
查看次数

将Pandas Multi-Index变成列

我有一个包含2个索引级别的数据框:

                         value
Trial    measurement
    1              0        13
                   1         3
                   2         4
    2              0       NaN
                   1        12
    3              0        34 
Run Code Online (Sandbox Code Playgroud)

我想转变成这个:

Trial    measurement       value

    1              0        13
    1              1         3
    1              2         4
    2              0       NaN
    2              1        12
    3              0        34 
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能做到最好?

我需要这个,因为我想按照这里的指示聚合数据,但如果它们被用作索引,我就无法选择我的列.

python flatten multi-index dataframe pandas

131
推荐指数
5
解决办法
8万
查看次数

使用Pandas为字符串列中的每个值添加一个字符串前缀

我想在一个pandas数据帧的所述列中的每个值的开头附加一个字符串(优雅地).我已经想出了如何做到这一点,我目前正在使用:

df.ix[(df['col'] != False), 'col'] = 'str'+df[(df['col'] != False), 'col']
Run Code Online (Sandbox Code Playgroud)

这似乎是一件不公平的事情 - 你知道其他任何方式(也许这个特性也可以将字符添加到该列为0或NaN的行中)吗?

如果还不清楚,我想转向:

    col 
1     a
2     0
Run Code Online (Sandbox Code Playgroud)

成:

       col 
1     stra
2     str0
Run Code Online (Sandbox Code Playgroud)

python string dataframe pandas

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

下采样1D numpy阵列

我有一个1-n numpy数组,我想下采样.如果下采样栅格不完全适合数据,则可以使用以下任何方法:

  • 重叠下采样间隔
  • 将最后剩余的数值转换为单独的下采样值
  • 插值以适合栅格

基本上如果我有

1 2 6 2 1
Run Code Online (Sandbox Code Playgroud)

我的下采样率为3,所有以下都可以:

3 3

3 1.5
Run Code Online (Sandbox Code Playgroud)

或者插值会给我的任何东西.

我只是在寻找最快/最简单的方法.

我找到了scipy.signal.decimate,但这听起来像是抽取了值(根据需要取出它们,只在X中留下一个). scipy.signal.resample似乎有正确的名字,但我不明白他们在描述中的整个傅立叶的位置.我的信号不是特别周期性的.

你能帮我一把吗?这似乎是一项非常简单的任务,但所有这些功能都非常错综复杂......

python signal-processing numpy scipy resampling

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

Bin pandas每X行数据帧

我有一个简单的数据框,我想每3行bin.

它看起来像这样:

    col1
0      2
1      1
2      3
3      1
4      0
Run Code Online (Sandbox Code Playgroud)

我想把它变成这个:

    col1
0      2
1    0.5
Run Code Online (Sandbox Code Playgroud)

我已经在这里发布了类似的问题,但我不知道如何将解决方案移植到我当前的用例中.

你能帮我吗?

非常感谢!

python binning dataframe pandas

17
推荐指数
2
解决办法
7464
查看次数

PIP安装"错误:包目录'X'不存在"

我正在尝试通过PIP 安装此软件包.它给了我以下错误:

error: package directory 'RTbatch' does not exist
Run Code Online (Sandbox Code Playgroud)

我觉得这很奇怪,因为相关的setup.py并没有提到任何packages变量,只是py_modules.

怎么了?你能帮我吗?

以下是完整输出pip install -e RTbatch:

Obtaining file:///home/chymera/RTbatch
  Running setup.py (path:/home/chymera/RTbatch/setup.py) egg_info for package from file:///home/chymera/RTbatch
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'heywords'
      warnings.warn(msg)

    error: package directory 'RTbatch' does not exist
    Complete output from command python setup.py egg_info:
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'heywords'

  warnings.warn(msg)

running egg_info

creating RTbatch.egg-info

writing requirements to RTbatch.egg-info/requires.txt

writing RTbatch.egg-info/PKG-INFO

writing top-level names to RTbatch.egg-info/top_level.txt

writing …
Run Code Online (Sandbox Code Playgroud)

python packaging pip easy-install

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

Argparse - 不要用'nargs`捕获位置参数.

我正在尝试编写一个函数wo,你可以通过argparse解析可变数量的参数 - 我知道我可以通过这个来做nargs="+".遗憾的是,argparse帮助的工作方式(以及人们通常在CLI中编写参数的方式)将位置参数放在最后.这导致我的位置参数被捕获为可选参数的一部分.

#!/usr/bin/python
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("positional", help="my positional arg", type=int)
parser.add_argument("-o", "--optional", help="my optional arg", nargs='+', type=float)
args = parser.parse_args()
print args.positional, args.optional
Run Code Online (Sandbox Code Playgroud)

运行此以./test.py -h显示以下使用说明:

usage: test.py [-h] [-o OPTIONAL [OPTIONAL ...]] positional
Run Code Online (Sandbox Code Playgroud)

但如果我跑./test.py -o 0.21 0.11 0.33 0.13 100了就给我

test.py: error: too few arguments
Run Code Online (Sandbox Code Playgroud)

为了正确解析args,我必须运行 ./test.py 100 -o 0.21 0.11 0.33 0.13

那么我该怎么做:

  • make argparse重新格式化使用输出,以免误导,或者甚至更好:

  • -o如果它是列表中的最后一个,则告诉argparse不捕获可选参数的最后一个元素

python argument-passing argparse

14
推荐指数
2
解决办法
4078
查看次数

SQLAlchemy将一列的默认值设置为另一列的默认值

我正在尝试为具有名称的物质(用于实验室中常用的名称)和长名称的另一列(如果名称实际上不完整)编写一个类.是否有一些怀疑告诉班级只是将名称字段的值复制到长名称字段,以防未指定长名称?

我试过这样的事情:

class Substance(Base):
    __tablename__ = "substances"
    id = Column(Integer, primary_key=True)
    code = Column(String, unique=True)
    name = Column(String, unique=True)
    long_name = Column(String, unique=True, default=name)
Run Code Online (Sandbox Code Playgroud)

但这失败了,因为name未定义.还有什么我可以做的吗?

python sqlalchemy class

12
推荐指数
2
解决办法
3676
查看次数

解释numpy.fft.fft2输出

我的目标是获得一个具有图像空间频率的图 - 有点像对它进行傅里叶变换.我不关心频率为f的特征图像上的位置(例如); 我想要一个图形告诉我每个频率有多少(频带的幅度可以用与该频率的对比度的总和来表示).

我试图通过该numpy.fft.fft2功能来做到这一点.

这是一个描述我的用例的最小示例的链接.

事实证明,我只得到明显更大的值frequencies[:30,:30],其中绝对最高值是frequencies[0,0].我怎么解释这个?

  • 每个值的幅度到底意味着什么?
  • 我的最高价值在于frequency[0,0]什么是0 Hz频率是什么意思?
  • 我可以以某种方式对值进行合并,以便我的频谱与方向无关吗?

python numpy fft frequency-distribution

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

Python如果N个变量中有多个是真的

我需要检查是否定义了a,b,c和d中的多个:

def myfunction(input, a=False, b=False, c=False, d=False):
    if <more than one True> in a, b, c, d:
    print("Please specify only one of 'a', 'b', 'c', 'd'.)
Run Code Online (Sandbox Code Playgroud)

我目前正在嵌套if语句,但这看起来很可怕.你能提出更好的建议吗?

python if-statement function argument-passing

9
推荐指数
2
解决办法
3226
查看次数