小编Ale*_*ley的帖子

尝试访问矩阵外部时获取特定值

在尝试获取NumPy矩阵之外的值时,是否可以接收指定值(例如0)?

例如:

#getItem - some method which do what i want
a = numpy.array([[1, 2], [3, 4]])
getItem(a, 1, 1) # == 4
getItem(a, -1, 1) # == 0
Run Code Online (Sandbox Code Playgroud)

当然我可以手工完成,但在Python中这些方法可能会有不好的表现.

python numpy matrix

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

使用pandas找出2列与Null之间的差异

我想在pandas DataFrame中找到2列int类型之间的区别.我正在使用python 2.7.栏目如下 -

>>> df
   INVOICED_QUANTITY  QUANTITY_SHIPPED
0                 15               NaN
1                 20               NaN
2                  7               NaN
3                  7               NaN
4                  7               NaN
Run Code Online (Sandbox Code Playgroud)

现在,我想从INVOICED_QUANTITY中减去QUANTITY_SHIPPED并执行以下操作 -

>>> df['Diff'] = df['QUANTITY_INVOICED'] - df['SHIPPED_QUANTITY']
>>> df
   QUANTITY_INVOICED  SHIPPED_QUANTITY  Diff
0                 15               NaN   NaN
1                 20               NaN   NaN
2                  7               NaN   NaN
3                  7               NaN   NaN
4                  7               NaN   NaN
Run Code Online (Sandbox Code Playgroud)

我该如何照顾NaN?我希望得到以下结果,因为我希望NaN被视为0(零) -

>>> df
       QUANTITY_INVOICED  SHIPPED_QUANTITY  Diff
    0                 15               NaN   15
    1                 20               NaN   20
    2                  7               NaN   7
    3                  7               NaN   7
    4 …
Run Code Online (Sandbox Code Playgroud)

python nan subtraction dataframe pandas

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

字符串比较'1111'<'99'为True

如果你像这样比较两个字符串有什么问题:

>>> "1111">'19'
False
>>> "1111"<'19'
True
Run Code Online (Sandbox Code Playgroud)

为什么'1111'小于'19'?

python

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

当A,B,M是大数时,如何计算(A ^ B)%M?

例如,如果A = 864927518,B = 1462579282,M = 193773611,如何计算(A^B)%M

有一个简单的方法吗?

python algorithm math exponentiation python-3.x

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

熊猫:使用groupby或数据透视表时保持日期顺序

我有一个pandas DataFrame(名为"df1")具有以下结构(虽然我有很多个月的日常数据):

           date  WeightedReturn
0    15/07/2015        0.005128
1    15/07/2015        0.002844
2    15/07/2015        0.003055
3    15/07/2015       -0.001481
4    15/07/2015       -0.000741
5    15/07/2015       -0.000741
6    16/07/2015       -0.004253
7    16/07/2015       -0.001712
8    16/07/2015       -0.001712
9    21/07/2015       -0.000178
10   21/07/2015       -0.000089
11   21/07/2015       -0.00008
Run Code Online (Sandbox Code Playgroud)

我希望从中创建一个新的DataFrame,它充当数据透视表并合并日期字段并对该特定日期的加权回报求和,得到如下内容:

  date        WeightedReturn
0 15/07/2015    0.00806425
1 16/07/2015    -0.007676
2 21/07/2015    -0.000356
Run Code Online (Sandbox Code Playgroud)

我尝试过使用"groupby函数":

df2 = df1.groupby('date').sum()
Run Code Online (Sandbox Code Playgroud)

这种(有点)工作,但输出然后错误地排序日期,如下所示:

            WeightedReturn
date                      
01/09/2015        0.004803
02/09/2015        0.005144
03/08/2015       -0.000120
03/09/2015       -0.025164
04/08/2015        0.003956
04/09/2015        0.008942
05/08/2015       -0.01323
Run Code Online (Sandbox Code Playgroud)

你可以看到的不是按时间顺序排列的.

所以我尝试使用数据透视表功能,但是阅读有关它使用的文档时我感到非常困惑.

我试过了:

df2 = pandas.pivot_table(df1, values="Weighted …
Run Code Online (Sandbox Code Playgroud)

python pivot-table dataframe python-2.7 pandas

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

在Python pandas数据帧中对唯一值进行分组和计数

我有一个超过33,000行的数据帧,我想简化:

                   Crime type
GeographyCode                              
E01006687          Burglary
E01007229          Anti-social behaviour
E01007229          Anti-social behaviour
E01007229          Anti-social behaviour
E01007229          Burglary
E01007229          Other theft
E01007229          Other theft
E01007229          Shoplifting
E01007229          Theft from the person
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
E01007230          Anti-social behaviour
...
Run Code Online (Sandbox Code Playgroud)

"GeographyCode"有207个唯一值,"犯罪类型"有12个唯一值.

我想创建一个包含207行和12列以及"GeographyCode"索引列的新数据框,每列代表一种犯罪类型,并包含GeographyCode中该犯罪类型的所有出现次数.

像这样的东西:

                Burglary   Anti-social    Theft   Shoplifting   etc...
GeographyCode
E01006687       1          3              9       5             ...
E01007229       1          3              2       1             ...
E01007230       0          6              12      5             ...
...
Run Code Online (Sandbox Code Playgroud)

我尝试过一些东西,但由于没有数值,我发现很难得到我需要的东西.

python indexing dataframe pandas

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

按两列中的值对 NumPy 数组进行排序

所以我有一个二维数组,当使用第二列排序时,它a[np.argsort(-a[:,1])]看起来像这样:

array([[ 30.        ,  98.7804878 ],
       [ 24.        ,  98.7804878 ],
       [ 21.        ,  98.7804878 ],
       [ 26.        ,  98.7804878 ],
       [ 20.        ,  98.70875179],
       [  4.        ,  98.27833572],
       [  1.        ,   7.10186514]])
Run Code Online (Sandbox Code Playgroud)

现在我想按最低的“id”列对它进行排序,所以它看起来像这样:

array([[ 21.        ,  98.7804878 ],
       [ 24.        ,  98.7804878 ],
       [ 26.        ,  98.7804878 ],
       [ 30.        ,  98.7804878 ],
       [ 20.        ,  98.70875179],
       [  4.        ,  98.27833572],
       [  1.        ,   7.10186514]])
Run Code Online (Sandbox Code Playgroud)

我不知道怎么做,即使我从第一个中获取最高的百分比然后订购它们。

python arrays sorting numpy

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

Pandas groupby:填充其他组成员的缺失值

我认为最好用一个例子来说明这一点。我想做的是从组中找到非空数字并将其传播到组的其余部分。

In [52]: df = pd.DataFrame.from_dict({1:{'i_id': 2, 'i_num':1}, 2: {'i_id': 2, 'i_num': np.nan}, 3: {'i_id': 2, 'i_num': np.nan}, 4: {'i_id': 3, 'i_num': np.nan}, 5: {'i_id': 3, 'i_num': 5}}, orient='index')

In [53]: df
Out[53]:
   i_num  i_id
1      1     2
2    NaN     2
3    NaN     2
4    NaN     3
5      5     3
Run Code Online (Sandbox Code Playgroud)

DataFrame 看起来像这样。我想要的是获取所有 i_id == 2 并使它们的 i_num == 1,以及所有 i_id == 3,并使它们的 i_num == 5 (因此两者都匹配它们的非空组邻居)。

所以最终的结果是这样的:

   i_num  i_id
1      1     2
2      1     2
3      1     2
4      5 …
Run Code Online (Sandbox Code Playgroud)

python nan dataframe pandas pandas-groupby

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

检查列的每一行是否在范围内

我正在构建一些数据的单元测试,并且在编写pythonic数据检查时遇到了麻烦.

我有一只熊猫DataFrame:

d = {'one' : pd.Series([.14, .52, 1.], index=['a', 'b', 'c']),
     'two' : pd.Series([.57, .25, .33, .98], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)

现在,我想验证这些列的数据是否在[0,1]范围内.我想要一个功能:

check_data(df, column) 
Run Code Online (Sandbox Code Playgroud)

True如果数据确实落在范围内,False如果没有,则返回.所以在我的示例数据中,check_data(df, 'one')返回False,check_data(df, 'two')返回True.

我的脑袋正试图逐行接受(感谢我多年的Excel VBA),但我知道这是错的.谁有更好的方法?

python dataframe pandas

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

Python:将字母和数字组合写入文件

我一直在寻找其他SO帖子,以便创建一个程序,根据某些参数生成一个组合列表(字母+数字),我已经得到了这样的结果:

from itertools import product
from string import *

keywords = [''.join(i) for i in product(ascii_letters + digits, repeat =  3)]
file = open("file.txt", "w")

for item in keywords: 
  file.write("%s\n" % item)

file.close()
Run Code Online (Sandbox Code Playgroud)

如果repeat参数保持在3/4,这个程序工作正常,但如果提高到5或更高,那么程序没有完成 - 它不会崩溃,似乎永远不会完成.我猜这是一个性能问题,但我不确定.如果有人能提供更有效的计划,那将是非常感激的.

其次,我希望程序输出:

  • AEC
  • CEA

使用此当前代码,它将仅输出第一个.

python string performance file-io

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