pandas 根据多列计算生成一列
时间: 2023-07-12 13:06:22 浏览: 107
可以使用 Pandas 的 apply 方法,结合 lambda 表达式来根据多列计算生成一列。
例如,假设有一个 DataFrame 包含三列(A、B、C),我们想要计算 A 和 B 列的和,并将其保存在新的一列 D 中,可以按照如下方式实现:
```python
import pandas as pd
# 创建 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 使用 apply 方法和 lambda 表达式计算新列
df['D'] = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(df)
```
输出结果为:
```
A B C D
0 1 4 7 5
1 2 5 8 7
2 3 6 9 9
```
在 lambda 表达式中,每一行的数据被表示为一个 Series 对象,可以通过索引的方式获取指定的列,然后进行计算。axis=1 表示对每一行进行操作。最后将计算结果保存到新的一列 D 中。
相关问题
pandas 根据多列计算生成多列
可以使用 pandas 的 apply 函数来实现根据多列计算生成多列的需求。具体步骤如下:
1. 定义一个函数,该函数接收一个 Series 类型的参数,该 Series 包含了需要计算的多个列的值,并返回一个包含需要生成的多个列的值的 Series。
2. 使用 apply 函数将该函数应用到需要计算的多个列上,生成一个新的 DataFrame。
下面是一个示例代码:
``` python
import pandas as pd
# 定义一个函数,该函数接收一个 Series 类型的参数,该 Series 包含了需要计算的多个列的值,并返回一个包含需要生成的多个列的值的 Series。
def calculate_cols(row):
col1 = row['col1']
col2 = row['col2']
col3 = col1 + col2
col4 = col1 - col2
return pd.Series({'col3': col3, 'col4': col4})
# 创建一个 DataFrame
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]})
# 使用 apply 函数将该函数应用到需要计算的多个列上,生成一个新的 DataFrame。
new_df = df.apply(calculate_cols, axis=1)
# 将新生成的多个列添加到原 DataFrame 中
df[['col3', 'col4']] = new_df[['col3', 'col4']]
```
在上面的代码中,我们首先定义了一个函数 calculate_cols,该函数接收一个包含需要计算的多个列的值的 Series,然后根据需要计算生成多个新的列的值,最后返回一个包含需要生成的多个列的值的 Series。
然后,我们创建了一个 DataFrame,并使用 apply 函数将 calculate_cols 函数应用到需要计算的多个列上,生成一个新的 DataFrame。最后,我们将新生成的多个列添加到原 DataFrame 中。
pandas 根据一列生成两列
可以使用 `pandas` 的 `str.split()` 方法,将一列文本数据按照指定的分隔符分割成多个部分,并将其转换为 `DataFrame` 对象。例如,假设我们有一个包含姓名和性别的数据表,姓名和性别之间用逗号分隔,我们想要将其分成两列姓名和性别,可以使用以下代码:
```python
import pandas as pd
# 创建包含姓名和性别的数据表
df = pd.DataFrame({'name_gender': ['Tom,Male', 'Jerry,Female']})
# 使用 str.split() 方法将 name_gender 分割成两列
df[['name', 'gender']] = df['name_gender'].str.split(',', expand=True)
# 打印结果
print(df)
```
输出结果为:
```
name_gender name gender
0 Tom,Male Tom Male
1 Jerry,Female Jerry Female
```
在这个例子中,我们使用 `str.split()` 方法将 `name_gender` 列按照逗号分割成两个部分,并使用 `expand=True` 参数将其转换为 `DataFrame` 对象,然后将生成的两列数据分别赋值给 `name` 和 `gender` 列。
阅读全文