如何拆分数据帧单元中的数据并在拆分时执行分组?

2024-05-19 18:49:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我用FourSquare的API制作了一些数据,列出了东伦敦不同地区附近的公园。它在数据帧中,df。你知道吗

Location,Parks,Borough
Aldborough Hatch,Fairlop Waters Country Park,Redbridge
Ardleigh Green,Haynes Park,Havering
Bethnal Green,"Haggerston Park, Weavers Fields",Tower Hamlets
Bromley-by-Bow,"Rounton Park, Grove Hall Park",Tower Hamlets
Cambridge Heath,"Haggerston Park, London Fields",Tower Hamlets
Dalston,"Haggerston Park, London Fields",Hackney

使用df = pd.read_clipboard(sep=',')导入数据

我想做的是按行政区列分组,并计算该行政区内不同的公园,例如“Tower Hamlets”=5,“Hackney”=2。为此,我将创建一个新的数据框,它只列出数据框中每个自治区的公园总数。你知道吗

我知道我能做到:

df.groupby(['Borough', 'Parks']).size()

但我需要用分隔符“,”来划分公园,这样它们就可以被看作是一个自治区的独特实体。你知道吗

你有什么建议?你知道吗

谢谢!你知道吗


Tags: 数据parkfieldsdfgreen行政区towerborough
2条回答

数据科学的第一条规则是将数据整理成有用的格式。

重新格式化DataFrame以使其可用:

df.Parks = df.Parks.str.split(',\s*') # per user piRSquared
df = df.explode('Parks') # pandas v 0.25

cleaned DataFrame

现在,数据帧采用了更易于分析的适当格式

df.groupby('Borough').Parks.nunique()

Borough
Hackney          2
Havering         1
Redbridge        1
Tower Hamlets    5
  • 这是三行代码,但是现在DataFrame是一种有用的格式,可以很容易地提取更多的细节。你知道吗

绘图

df.groupby(['Borough']).Parks.nunique().plot(kind='bar', title='Unique Parks Counts by Borough')

enter image description here

如果您使用的是Pandas 0.25或更高版本,请考虑Trenton_M
他的回答为创建更有用的数据集提供了一个很好的建议。你知道吗

IIUC公司:

df.groupby('Borough').Parks.apply(
    lambda s: len(set(', '.join(s).split(', ')))
)

Borough
Hackney          2
Havering         1
Redbridge        1
Tower Hamlets    5
Name: Parks, dtype: int64

相似

df.Parks.str.split(', ').groupby(df.Borough).apply(lambda s: len(set().union(*s)))

Borough
Hackney          2
Havering         1
Redbridge        1
Tower Hamlets    5
Name: Parks, dtype: int64

相关问题 更多 >