dataframe根据某一列字符串的前几个值分组
时间: 2023-10-08 09:08:04 浏览: 160
dataframe 按条件替换某一列中的值方法
可以使用pandas的groupby方法和apply函数来实现根据某一列字符串的前几个值分组:
假设有如下的DataFrame:
```python
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],
'age': [25, 30, 35, 40, 45, 50],
'group': ['A001', 'A002', 'B001', 'B002', 'A003', 'B003']
})
```
现在要根据group列的前两个字符分组,可以使用以下代码:
```python
def group_by_prefix(df, col_name, prefix_len):
groups = df[col_name].apply(lambda x: x[:prefix_len])
return df.groupby(groups)
grouped = group_by_prefix(df, 'group', 2)
```
这里定义了一个group_by_prefix函数,接收三个参数:DataFrame对象、要分组的列名、前缀的长度。函数内部使用apply方法和lambda函数获取group列的前两个字符,然后使用groupby方法进行分组。
最后的grouped对象就是分组后的结果,可以对它进行各种操作。比如,可以使用get_group方法获取某个分组的数据:
```python
grouped.get_group('A0')
```
输出:
```
name age group
0 Alice 25 A001
1 Bob 30 A002
4 Eve 45 A003
```
可以看到,这里获取了group列前两个字符为"A0"的分组。
阅读全文