Dataframe 新增一列, apply 通用方法
时间: 2023-11-14 07:10:23 浏览: 136
可以使用 `apply` 方法对 DataFrame 中的某一列进行操作,并将结果存储为新的一列。下面是一个示例:
```python
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 定义一个函数
def my_func(x):
return x * 2
# 对列 A 应用函数 my_func,并将结果存储为新的一列 C
df['C'] = df['A'].apply(my_func)
# 输出结果
print(df)
```
上面的代码中,`apply` 方法接受一个函数作为参数,并将该函数应用于 DataFrame 的某一列。函数 `my_func` 接受一个参数 `x`,将其乘以 2 并返回。最后,将得到的结果存储为新的一列 C,并输出 DataFrame。
相关问题
dataframe新增一列
要在dataframe中新增一列,可以使用以下方法:
1. 使用索引方式新增一列
```python
import pandas as pd
#创建一个dataframe
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
#新增一列C
df['C'] = [7, 8, 9]
print(df)
```
输出:
```
A B C
0 1 4 7
1 2 5 8
2 3 6 9
```
2. 使用assign方式新增一列
```python
import pandas as pd
#创建一个dataframe
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
#新增一列C
df = df.assign(C=[7, 8, 9])
print(df)
```
输出:
```
A B C
0 1 4 7
1 2 5 8
2 3 6 9
```
3. 使用apply方式新增一列
```python
import pandas as pd
#创建一个dataframe
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
#新增一列C,C列的值是A列和B列的和
df['C'] = df.apply(lambda x: x['A'] + x['B'], axis=1)
print(df)
```
输出:
```
A B C
0 1 4 5
1 2 5 7
2 3 6 9
```
其中,`axis=1`表示对每一行进行操作。
dataframe新增一列序号
要在Pandas DataFrame中新增一列序号,你可以采用以下方法:
1. **简单计数**[^1]:
```python
data['SerialNo'] = range(len(data)) # 生成从0开始到DataFrame长度减1的序列
```
2. **基于索引**:
```python
data['SerialNo'] = data.index # 新增一列,其值等于DataFrame的索引(默认从0开始)
```
3. **使用`apply()`函数**[^2]:
```python
def generate_seq(row):
return row.name # 对每一行应用row.name,返回当前行的索引作为序号
data['SerialNo'] = data.apply(generate_seq, axis=1)
```
4. **基于其他列**:
如果你想基于某个已存在的列来生成序号,比如`data['OldCol']`,可以这样操作:
```python
data['SerialNo'] = data.groupby('OldCol').cumcount() # 按照OldCol分组并累加计数
```
相关问题:
1. 序号列如何根据特定条件重新排列?
2. 如何避免在已有重复值的列上添加序号?
3. 使用`apply()`函数时,如果某些行缺失值,如何处理?
阅读全文