pandas将某一列相同的其他数据加起来
时间: 2023-11-24 22:06:19 浏览: 152
可以使用pandas的groupby方法进行分组,然后使用sum方法对分组后的数据进行求和。例如,假设我们有一个DataFrame对象df,其中有两列数据,分别是"category"和"value",我们想要根据"category"列进行分组,然后对"value"列求和,可以按照如下方式实现:
```python
grouped = df.groupby("category")
summed = grouped["value"].sum()
```
这将返回一个Series对象,其中每个元素是相应分组的"value"列的总和。如果你想要将结果重新合并到原始的DataFrame中,可以使用merge方法:
```python
summed_df = pd.DataFrame(summed).reset_index()
merged = pd.merge(df, summed_df, on="category", how="left")
```
这将返回一个新的DataFrame对象,其中包含了原始数据以及每个类别的"value"列的总和。
相关问题
pandas中某一列名相同的另一列数据相加
假设你有一个名为`df`的pandas DataFrame,其中有两列,分别为`col1`和`col2`,其中`col1`中有重复的值。你可以使用`groupby`和`sum`来实现相同`col1`值的`col2`数据相加,示例如下:
```python
import pandas as pd
# 创建示例数据
data = {'col1': ['A', 'B', 'A', 'B'], 'col2': [1, 2, 3, 4]}
df = pd.DataFrame(data)
# 使用groupby和sum函数相加col2列数据
df_sum = df.groupby('col1')['col2'].sum().reset_index()
print(df_sum)
```
输出结果为:
```
col1 col2
0 A 4
1 B 6
```
上述代码中,`groupby`函数按照`col1`列进行分组,然后对每个分组中的`col2`数据进行求和,并将结果保存在一个新的DataFrame中。最后使用`reset_index`函数重置索引。
pandas提取某一列具有相同规律的数字
可以使用正则表达式来提取具有相同规律的数字列。假设数据框为df,列名为col,数字规律为3个数字-3个数字-4个数字,可以使用以下代码:
```
import re
pattern = r'\d{3}-\d{3}-\d{4}' # 正则表达式
df['new_col'] = df['col'].apply(lambda x: re.findall(pattern, str(x))[0] if re.findall(pattern, str(x)) else None)
```
解释一下代码:
1. `import re`:导入正则表达式模块。
2. `pattern = r'\d{3}-\d{3}-\d{4}'`:定义正则表达式,\d表示数字,{3}表示匹配三个数字,-表示匹配“-”符号。
3. `df['new_col'] = df['col'].apply(lambda x: re.findall(pattern, str(x))[0] if re.findall(pattern, str(x)) else None)`:使用apply函数对col列的每个元素应用lambda函数,lambda函数使用re.findall函数提取符合正则表达式的数字,如果提取到数字则返回第一个数字,否则返回None。最后将提取到的数字存入新的列new_col中。
需要注意的是,如果某些元素中没有符合正则表达式的数字,则会返回None。如果需要保留原始数据,可以将lambda函数中的else部分改为返回原始数据。
阅读全文
相关推荐















