阅读完: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) 不太清楚为什么我无法解决这个问题.我正在寻找使用索引号切片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数据帧中应用正则表达式函数列时遇到问题.这是我的数据帧的负责人:
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) 我有一个如下所示的数据框:
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) 使用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) 我无法弄清楚如何编写函数来完成分组百分位数.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) 我有一个包含高度信息的 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 中执行此操作。任何帮助将不胜感激。
我在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) 如果我有两个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) 我正在寻找一种方法来计算一列中的值的数量,并证明它比我原先想象的更棘手.
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)