我有一个出租车数据的数据框,有两列,如下所示:
Neighborhood Borough Time
Midtown Manhattan X
Melrose Bronx Y
Grant City Staten Island Z
Midtown Manhattan A
Lincoln Square Manhattan B
Run Code Online (Sandbox Code Playgroud)
基本上,每行代表该行政区附近的出租车.现在,我想在每个行政区找到前5个街区,拥有最多的皮卡.我试过这个:
df['Neighborhood'].groupby(df['Borough']).value_counts()
Run Code Online (Sandbox Code Playgroud)
这给了我这样的东西:
borough
Bronx High Bridge 3424
Mott Haven 2515
Concourse Village 1443
Port Morris 1153
Melrose 492
North Riverdale 463
Eastchester 434
Concourse 395
Fordham 252
Wakefield 214
Kingsbridge 212
Mount Hope 200
Parkchester 191
......
Staten Island Castleton Corners 4
Dongan Hills 4
Eltingville 4
Graniteville 4
Great Kills 4
Castleton 3
Woodrow 1
Run Code Online (Sandbox Code Playgroud)
如何过滤它以便我只获得前5个?我知道有几个问题有类似的标题,但它们对我的情况没有帮助.
我正在使用我已经在我的工作中使用了很长时间的聚合函数.这个想法是,如果系列传递给函数的长度为1(即该组只有一个观察值),则返回该观察值.如果传递的系列的长度大于1,则在列表中返回观察结果.
这对某些人来说可能看起来很奇怪,但这不是X,Y问题,我有充分的理由想要这样做与这个问题无关.
这是我一直在使用的功能:
def MakeList(x):
""" This function is used to aggregate data that needs to be kept distinc within multi day
observations for later use and transformation. It makes a list of the data and if the list is of length 1
then there is only one line/day observation in that group so the single element of the list is returned.
If the list is longer than one then there are multiple line/day observations and the list itself is …
Run Code Online (Sandbox Code Playgroud) 按列分组以在另一列中查找最频繁的值。例子:
import pandas as pd
d = {'col1': ['green','green','green','blue','blue','blue'],'col2': ['gx','gx','ow','nb','nb','mj']}
df = pd.DataFrame(data=d)
df
Run Code Online (Sandbox Code Playgroud)
给出:
col1 col2
green gx
green gx
green ow
blue nb
blue nb
blue xv
Run Code Online (Sandbox Code Playgroud)
结果:
因为green
拥有gx
和blue
拥有nb
我有一个包含2列的pandas数据框(下面的代码段).我正在尝试使用City列来推断Borough(您会注意到一些需要替换的Unspecified值).要做到这一点,我试图为每个城市显示最高的自治市镇并输出到一个字典,其中关键是城市,价值将是该城市最高的自治市镇.
City Borough
Brooklyn Brooklyn
Astoria Queens
Astoria Unspecified
Ridgewood Unspecified
Ridgewood Queens
Run Code Online (Sandbox Code Playgroud)
因此,如果发现里奇伍德与皇后队100次配对,布鲁克林4次与曼哈顿1次配对,那么这对将是里奇伍德:皇后区.
到目前为止,我已经尝试过这段代码:
specified = data[['Borough','City']][data['Borough']!= 'Unspecified']
paired = specified.Borough.groupby(specified.City).max()
Run Code Online (Sandbox Code Playgroud)
乍一看,这似乎是正确的输出,但仔细检查后,输出完全不正确.有任何想法吗?
编辑:
试过下面的建议:paired = specified.groupby('City').agg(lambda x:stats.mode(x ['Borough'])[0])
我注意到一些自治市镇被截断,如下图所示:
paired.Borough.value_counts()
#[Out]# QUEENS 58
#[Out]# MANHATTAN 7
#[Out]# STATEN ISLAND 4
#[Out]# BRONX 4
#[Out]# BROOKLYN 3
#[Out]# MANHATTA 2
#[Out]# STATE 1
#[Out]# QUEEN 1
#[Out]# MANHA 1
#[Out]# BROOK 1
Run Code Online (Sandbox Code Playgroud)
当然我可以手动替换截断的单词,但我很想知道原因是什么?
PS - 这是DF指定的FYI的输出:
specified
#[Out]# <class 'pandas.core.frame.DataFrame'>
#[Out]# Int64Index: 719644 entries, 1 to 396225
#[Out]# Data columns: …
Run Code Online (Sandbox Code Playgroud) 如何在Python中获取每个标记最常出现的类别(模式)?
+------------------+----------+
| tag | category |
+------------------+----------+
| automotive | 8 |
| ba | 8 |
| bamboo | 8 |
| bamboo | 8 |
| bamboo | 8 |
| bamboo | 8 |
| bamboo | 8 |
| bamboo | 10 |
| bamboo | 8 |
| bamboo | 9 |
| bamboo | 8 |
| bamboo | 10 |
| bamboo | 8 |
| bamboo | 9 |
| bamboo …
Run Code Online (Sandbox Code Playgroud) 我试图获得在GROUPBY对象中列的方式,但我发现了这个错误:incompatible index of inserted column with frame index
。
这是我得到这个的线路,我不知道如何解决它。任何帮助,将不胜感激。
dfBitSeq['KMeans'] = df.groupby('OnBitSeq')['KMeans'].apply(lambda x: x.mode())
Run Code Online (Sandbox Code Playgroud) 我有以下DataFrame:
item response
1 A
1 A
1 B
2 A
2 A
Run Code Online (Sandbox Code Playgroud)
我想添加一个对项目给出最多响应的列.这应该导致:
item response mostGivenResponse
1 A A
1 A A
1 B A
2 C C
2 C C
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
df["responseCount"] = df.groupby(["ItemCode", "Response"])["Response"].transform("count")
df["mostGivenResponse"] = df.groupby(['ItemCode'])['responseCount'].transform(max)
Run Code Online (Sandbox Code Playgroud)
但是,大多数的响应现在都是响应的计数,而不是响应本身.
我试图通过使用下面的 Pandas 数据框根据模式查找该项目属于哪个类别
数据
ITEM CATEGORY
1 red saree actual
2 red saree actual
3 glass lbh
4 glass lbh
5 red saree actual
6 red saree lbh
7 glass actual
8 bottle actual
9 bottle actual
Run Code Online (Sandbox Code Playgroud)
我想弄清楚的是通过获取我想根据类别模式为每个独特项目分配一个类别的独特项目。
预期输出:
ITEM CATEGORY
1 red saree actual
2 glass lbh
3 bottle actual
Run Code Online (Sandbox Code Playgroud)
请告诉我如何在python中查找,提前致谢
试过:
import pandas as pd
from scipy.stats import mode
data_x = map(mode, data['category'])
Run Code Online (Sandbox Code Playgroud)
我知道它甚至与此无关,但无法找到如何为此编写代码
给定以下列表,我想以“颜色”列的模式(以“类型”和“大小”为条件)填充“颜色猜测”列,并忽略NULL,#N / A等。
例如,“小型猫”最常用的颜色是什么,“中型狗”最常用的颜色是什么,等等。
Run Code Online (Sandbox Code Playgroud)Type Size Color Color Guess Cat small brown Dog small black Dog large black Cat medium white Cat medium #N/A Dog large brown Cat large white Cat large #N/A Dog large brown Dog medium #N/A Cat small #N/A Dog small white Dog small black Dog small brown Dog medium white Dog medium #N/A Cat large brown Dog small white Dog large #N/A