小编itj*_*s18的帖子

按pandas中的自定义列表排序

阅读完:http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.DataFrame.sort.html

我似乎还无法弄清楚如何通过自定义列表对列进行排序.显然,默认排序是按字母顺序排列的.我举个例子.这是我的(非常删节)数据框:

             Player      Year   Age   Tm     G
2967     Cedric Hunter   1991    27  CHH     6
5335     Maurice Baker   2004    25  VAN     7
13950    Ratko Varda     2001    22  TOT     60
6141     Ryan Bowen      2009    34  OKC     52
6169     Adrian Caldwell 1997    31  DAL     81
Run Code Online (Sandbox Code Playgroud)

我希望能够按Player,Year和Tm进行排序.按正常顺序,播放器和年份的默认排序对我来说没问题.但是,我不希望团队按字母顺序排序b/c我希望TOT始终位于顶部.

这是我创建的列表:

sorter = ['TOT', 'ATL', 'BOS', 'BRK', 'CHA', 'CHH', 'CHI', 'CLE', 'DAL', 'DEN',
   'DET', 'GSW', 'HOU', 'IND', 'LAC', 'LAL', 'MEM', 'MIA', 'MIL',
   'MIN', 'NJN', 'NOH', 'NOK', 'NOP', 'NYK', 'OKC', 'ORL', 'PHI',
   'PHO', 'POR', 'SAC', …
Run Code Online (Sandbox Code Playgroud)

python sorting pandas

44
推荐指数
7
解决办法
3万
查看次数

通过排除索引号来选择pandas行

不太清楚为什么我无法解决这个问题.我正在寻找使用索引号切片Pandas数据帧.我有一个列表/核心索引,其中包含我不需要的索引号,如下所示

 pandas.core.index.Int64Index

 Int64Index([2340, 4840, 3163, 1597, 491 , 5010, 911 , 3085, 5486, 5475, 1417, 2663, 4204, 156 , 5058, 1990, 3200, 1218, 3280, 793 , 824 , 3625, 1726, 1971, 2845, 4668, 2973, 3039, 376 , 4394, 3749, 1610, 3892, 2527, 324 , 5245, 696 , 1239, 4601, 3219, 5138, 4832, 4762, 1256, 4437, 2475, 3732, 4063, 1193], dtype=int64)
Run Code Online (Sandbox Code Playgroud)

如何创建除这些索引号之外的新数据帧.我试过了

df.iloc[combined_index]
Run Code Online (Sandbox Code Playgroud)

显然这只是显示那些索引号的行(与我想要的相反).任何帮助将不胜感激

python pandas

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

将正则表达式应用于pandas数据帧

我在python数据帧中应用正则表达式函数列时遇到问题.这是我的数据帧的负责人:

               Name   Season          School   G    MP  FGA  3P  3PA    3P%
 74       Joe Dumars  1982-83   McNeese State  29   NaN  487   5    8  0.625   
 84      Sam Vincent  1982-83  Michigan State  30  1066  401   5   11  0.455   
 176  Gerald Wilkins  1982-83     Chattanooga  30   820  350   0    2  0.000   
 177  Gerald Wilkins  1983-84     Chattanooga  23   737  297   3   10  0.300   
 243    Delaney Rudd  1982-83     Wake Forest  32  1004  324  13   29  0.448  
Run Code Online (Sandbox Code Playgroud)

我认为我已经很好地掌握了将函数应用于Dataframes,所以也许我的正则表达式技能缺乏.

这是我放在一起的东西:

import re

def split_it(year):
    return re.findall('(\d\d\d\d)', year)

 df['Season2'] = df['Season'].apply(split_it(x)) …
Run Code Online (Sandbox Code Playgroud)

python regex pandas

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

分组和缩放/标准化r中的列

我有一个如下所示的数据框:

  Store Temperature Unemployment Sum_Sales
1     1       42.31        8.106   1643691
2     1       38.51        8.106   1641957
3     1       39.93        8.106   1611968
4     1       46.63        8.106   1409728
5     1       46.50        8.106   1554807
6     1       57.79        8.106   1439542
Run Code Online (Sandbox Code Playgroud)

我在R中无法弄清楚的是如何分组和申请.因此,对于每个商店(分组),我想标准化/缩放两列(sum_sales和temperature).

我想要的输出如下:

  Store Temperature Unemployment Sum_Sales
1     1       1.000        8.106   1.00000
2     1       0.000        8.106   0.94533
3     1       0.374        8.106   0.00000
4     2       0.012        8.106   0.00000
5     2       0.000        8.106   1.00000
6     2       1.000        8.106   0.20550
Run Code Online (Sandbox Code Playgroud)

这是我创建的规范化功能:

 normalit<-function(m){
   (m - min(m))/(max(m)-min(m))
 }
Run Code Online (Sandbox Code Playgroud)

我正在使用dply包,似乎无法弄清楚如何分组并将该函数应用于列.我试过这样的事情并得到一个错误:

df2 <- …
Run Code Online (Sandbox Code Playgroud)

r plyr dplyr

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

dplyr和tail改变r中group_by的最后一个值

使用dplyr时,我无法更改数据帧的最后一个值.我想按用户和标记进行分组,并将时间更改为0,以获取组中的最后一个值/行.

     user_id     tag   Time
1  268096674       1    3
2  268096674       1    10
3  268096674       1    1
4  268096674       1    0
5  268096674       1    9999
6  268096674       2    0
7  268096674       2    9
8  268096674       2    500
9  268096674       3    0
10 268096674       3    1
...
Run Code Online (Sandbox Code Playgroud)

期望的输出:

     user_id     tag   Time
1  268096674       1    3
2  268096674       1    10
3  268096674       1    1
4  268096674       1    0
5  268096674       1    0
6  268096674       2    0
7  268096674       2    9
8  268096674       2 …
Run Code Online (Sandbox Code Playgroud)

r tail dplyr

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

百分比在群体中的大熊猫排名

我无法弄清楚如何编写函数来完成分组百分位数.1985年至2012年,我拥有数据框架中的所有团队; 前10个显示如下:它目前按年份排序.我想给LgRnk分组的百分位数Year.因此,例如,1985年的23个LgRank(最差的球队)将是100个百分点,而1985年的1个LgRank(最佳球队)将是1个百分点.2010年的30 LgRank(最差的团队)将是百分之百等.它需要按年份不同数量的b/c进行分组LgRnk.

    Team                WLPer   Year LgRnk   W  L
19  Sacramento Kings    0.378   1985    18  31  51
0   Atlanta Hawks       0.415   1985    17  34  48
17  Phoenix Suns        0.439   1985    16  36  46
4   Cleveland Cavaliers 0.439   1985    15  36  46
13  Milwaukee Bucks     0.720   1985    3   59  23
3   Chicago Bulls       0.463   1985    14  38  44
16  Philadelphia 76ers  0.707   1985    4   58  24
22  Washington Wizards  0.488   1985    13  40  42
20 …
Run Code Online (Sandbox Code Playgroud)

python statistics numpy scipy pandas

8
推荐指数
1
解决办法
7715
查看次数

在 python pandas 中将高度(英尺和英寸)更改为整数

我有一个包含高度信息的 pandas 数据框,但我似乎无法弄清楚如何将有些非结构化信息转换为整数。

我认为解决这个问题的最佳方法是使用正则表达式,但我遇到的主要问题是,当我尝试简化问题以使用正则表达式时,我通常采用数据帧中的第一项(7'5.5'')并尝试专门对其使用正则表达式。由于引号的原因,我似乎不可能将这些数据放入字符串中。所以,我真的很困惑如何解决这个问题。

这是我的数据框:

    HeightNoShoes   HeightShoes
0   7' 5.5"             NaN
1   6' 11"           7' 0.25"
2   6' 7.75"            6' 9"
3   6' 5.5"          6' 6.75"
4   5' 11"           6' 0"
Run Code Online (Sandbox Code Playgroud)

输出应以英寸为单位:

    HeightNoShoes   HeightShoes
0   89.5                NaN
1   83                 84.25
2   79.75               81
3   77.5              78.75
4   71                  72
Run Code Online (Sandbox Code Playgroud)

我的下一个选择是将其写入 csv 并使用 excel,但我更愿意学习如何在 python/pandas 中执行此操作。任何帮助将不胜感激。

python regex pandas

6
推荐指数
1
解决办法
9444
查看次数

在R矩阵中的对角线上方插入数字

我在R中有这样的矢量:

vec1 <- c(14000,12000,8000)
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个矩阵,其中14000是我的主对角线,1200是一个在对角线上方,8000个在对角线上方.

我熟悉在Python/numpy中这样做,但无法在R中找出它(或者至少是一种有效的方法).理想情况下,输出看起来像这样:

14000 12000  8000
    0 14000 12000
    0     0 14000
Run Code Online (Sandbox Code Playgroud)

r diagonal

6
推荐指数
1
解决办法
532
查看次数

找到两个数组的非相交值

如果我有两个numpy数组并想要找到不相交的值,我该怎么做?

这是我无法弄清楚的一个简短例子.

a = ['Brian', 'Steve', 'Andrew', 'Craig']
b = ['Andrew','Steve']
Run Code Online (Sandbox Code Playgroud)

我想找到不相交的值.在这种情况下,我希望我的输出是:

['Brian','Craig']
Run Code Online (Sandbox Code Playgroud)

与我想要的完全相反:

c=np.intersect1d(a,b)
Run Code Online (Sandbox Code Playgroud)

返回

['Andrew' 'Steve']
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

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

pandas计算数据帧的每列中的值

我正在寻找一种方法来计算一列中的值的数量,并证明它比我原先想象的更棘手.

       Percentile   Percentile1 Percentile2 Percentile3
0       mediocre    contender   contender   mediocre
69      mediocre    bad         mediocre    mediocre
117     mediocre    mediocre    mediocre    mediocre
144     mediocre    none        mediocre    contender
171     mediocre    mediocre    contender   mediocre
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建类似于以下输出的内容.它需要四个选项并按列计算.它本质上是每列的pd.value.counts.任何帮助肯定会受到赞赏.

         Percentile     Percentile1     Percentile2     Percentile3
mediocre:    5               2               3               4
contender:   0               1               2               1
bad:         0               1               0               0
none:        0               1               0               0
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

标签 统计

python ×7

pandas ×6

r ×3

dplyr ×2

numpy ×2

regex ×2

arrays ×1

dataframe ×1

diagonal ×1

plyr ×1

scipy ×1

sorting ×1

statistics ×1

tail ×1