如何将包含以相同字符开头的字符串的行与 pandas 合并?

问题描述 投票:0回答:1

我有一个 csv 读入内存,作为 pandas 中的

accident_data_df
,它返回这样的表

事故
I-10 10
I-15 10
I-10 东 10
美国街 10
美国ST 10

我正在尝试使用 pandas 来压缩行,以便它们返回类似的内容

事故
I-10 20
I-15 10
美国街 20

还有其他方法可以根据数据集对道路进行分类,例如,农场到市场显示为“FM”,SR 表示国道等。如果有助于任何推理,则将道路分为不同的类别0-7(例如,0 是州际公路,1 是国道)。

我想找到一种方法将所有单独的道路放入一行,因此将

I-10
I-10 East 
分组在同一行,但这与
I-100
不同。因此,对于州际公路,它可以是“I-”之后的任何非数字的内容,例如空格或字母。

我已经看到类似的问题得到了回答,但它们不处理包含字符串的行,而且它们似乎也不包括如何将值求和到同一行中。如果其他地方已经回答了这个问题,请告诉我!

python pandas dataframe
1个回答
0
投票

识别街道名称中的不同模式,创建单独的街道类型和街道名称列,并对这些列执行分组。

patterns = {
    'Interstate': 'I-(?P<Name>\d+)\s?(?P<direction>.*)',
    'Local': '(?i)(?P<Name>.*) St'
}

for street_type, pattern in patterns.items():
    name = df['Road'].str.extract(pattern)['Name']

    df.loc[~name.isna(), 'Name'] = name
    df.loc[~name.isna(), 'Type'] = street_type

df.groupby(['Type', 'Name'])['Accident'].sum()
© www.soinside.com 2019 - 2024. All rights reserved.