相关疑难解决方法(0)

什么是"矢量化"?

好几次,我在matlab,fortran ......中遇到过这个术语......但是我从来没有找到解释是什么意思,它有什么作用?所以我在这里问,什么是矢量化,例如,"循环是矢量化的"是什么意思?

vectorization

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

将pandas dataframe中的列从int转换为string

我在pandas中有一个带有混合int和str数据列的数据帧.我想先连接数据框中的列.要做到这一点,我必须将int列转换为str.我试着这样做:

mtrx['X.3'] = mtrx.to_string(columns = ['X.3'])
Run Code Online (Sandbox Code Playgroud)

要么

mtrx['X.3'] = mtrx['X.3'].astype(str)
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下它都不起作用,我收到的错误是"无法连接'str'和'int'对象".连接两str列是完美的.

python string int dataframe pandas

89
推荐指数
6
解决办法
25万
查看次数

为什么repr(int)比str(int)更快?

我想知道为什么repr(int)比快str(int).使用以下代码段:

ROUNDS = 10000

def concat_strings_str():
    return ''.join(map(str, range(ROUNDS)))

def concat_strings_repr():
    return ''.join(map(repr, range(ROUNDS)))

%timeit concat_strings_str()
%timeit concat_strings_repr()
Run Code Online (Sandbox Code Playgroud)

我得到了这些时间(python 3.5.2,但与2.7.12的结果非常相似):

 1.9 ms ± 17.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
 1.38 ms ± 9.07 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Run Code Online (Sandbox Code Playgroud)

如果我走在正确的道路上,同样的功能long_to_decimal_string就会在引擎盖下面调用.

我错了什么或者我还缺少什么?


更新:这可能没有什么用int__repr____str__方法,但之间的差异repr()str(),如int.__str__和 …

python performance python-internals

34
推荐指数
3
解决办法
2397
查看次数

pandas区分str和object类型

Numpy似乎区分strobject类型.比如我可以做::

>>> import pandas as pd
>>> import numpy as np
>>> np.dtype(str)
dtype('S')
>>> np.dtype(object)
dtype('O')
Run Code Online (Sandbox Code Playgroud)

其中D型("S")和D型("O")对应于strobject分别.

但是熊猫似乎就缺少了区分,并要挟strobject.::

>>> df = pd.DataFrame({'a': np.arange(5)})
>>> df.a.dtype
dtype('int64')
>>> df.a.astype(str).dtype
dtype('O')
>>> df.a.astype(object).dtype
dtype('O')
Run Code Online (Sandbox Code Playgroud)

强制类型dtype('S')也无济于事.::

>>> df.a.astype(np.dtype(str)).dtype
dtype('O')
>>> df.a.astype(np.dtype('S')).dtype
dtype('O')
Run Code Online (Sandbox Code Playgroud)

这种行为有什么解释吗?

python numpy pandas

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

无法在python数据帧中将列类型从object转换为str

我已经下载了一个csv文件,然后将其读取到python数据帧,现在所有4列都有对象类型,我想将它们转换为str类型,

在此输入图像描述

现在dtypes的结果如下:

Name                      object
Position Title            object
Department                object
Employee Annual Salary    object
dtype: object
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法更改类型:

path['Employee Annual Salary'] = path['Employee Annual Salary'].astype(str)
Run Code Online (Sandbox Code Playgroud)

但dtypes仍然返回类型对象,我也尝试在读取csv时提供列类型,

path = pd.read_csv("C:\\Users\\IBM_ADMIN\\Desktop\\ml-1m\\city-of-chicago-salaries.csv",dtype={'Employee Annual Salary':str})
Run Code Online (Sandbox Code Playgroud)

要么

path = pd.read_csv("C:\\Users\\IBM_ADMIN\\Desktop\\ml-1m\\city-of-chicago-salaries.csv",dtype=str)
Run Code Online (Sandbox Code Playgroud)

但仍然无法工作,想知道如何将列类型从对象更改为str,

python type-conversion dataframe

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

python/pandas:需要帮助为列添加双引号

我需要在我的脚本生成的csv文件中的特定列中添加双引号.

以下是我想到的这种愚蠢的方式.对于这两个固定宽度的字段,它的工作原理是:

df['DATE'] = df['DATE'].str.ljust(9,'"')
df['DATE'] = df['DATE'].str.rjust(10,'"')

df['DEPT CODE'] = df['DEPT CODE'].str.ljust(15,'"')
df[DEPT CODE'] = df['DEPT CODE'].str.rjust(16,'"')
Run Code Online (Sandbox Code Playgroud)

对于以下字段,它不会.它有一个可变长度.因此,如果该值短于标准的6位数,我会得到额外的双引号:"5673"""

df['ID'] = df['ID'].str.ljust(7,'"')
df['ID'] = df['ID'].str.rjust(8,'"')
Run Code Online (Sandbox Code Playgroud)

我试过zfill,但是列中的数据是一个系列 - 当我运行时,我得到"pandas.core.series.Series"

print type(df['ID'])
Run Code Online (Sandbox Code Playgroud)

我无法使用astype将其转换为字符串.我不知道为什么.我没有进口numpy.

我尝试使用len()来获取ID号的长度,并将其作为第一个参数传递给str.ljust和str.rjust,但我认为它挂起的数据不是字符串.

是否有一种更简单的方法可以根据需要应用双引号,还是zfill将成为可行的方法?

csv numpy python-2.7 double-quotes

3
推荐指数
1
解决办法
7759
查看次数

仅对带有 Pandas 的字符串列应用转换,忽略数字数据

所以,我有一个非常大的数据框,有 85 列和近 90,000 行,我想在所有这些中使用 str.lower() 。但是,有几列包含数字数据。有没有一个简单的解决方案?

> df

    A   B   C
0   10  John    Dog
1   12  Jack    Cat
2   54  Mary    Monkey
3   23  Bob     Horse
Run Code Online (Sandbox Code Playgroud)

比,在使用像 df.applymap(str.lower) 这样的东西后,我会得到:

> df

    A   B   C
0   10  john    dog
1   12  jack    cat
2   54  mary    monkey
3   23  bob     horse
Run Code Online (Sandbox Code Playgroud)

目前它显示此错误消息:

TypeError: descriptor 'lower' requires a 'str' object but received a 'int'
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

3
推荐指数
1
解决办法
183
查看次数