根据已有列计算其他列
- 1、根据已有列新增列
- 2、根据已有列修改其他列
读取数据源
import pandas as pd
# 读取智能大师号码信息
path1 = r'../excelFile-j/flower.csv'
df_data = pd.read_csv(path1)
# df_data 内容
1、根据已有列新增列
方式一:根据单列
df_data["LengthAdd"] = df_data["Sepal.Length"] + 2
方式二:根据多列
df_data["L*W"] = df_data["Sepal.Length"] * df_data["Sepal.Width"]
方式三:利用apply函数
def sqrt_test(a):
s = a * a + 1
return s
df_data['W*W+1'] = df_data['Sepal.Width'].apply(lambda x : sqrt_test(x))
2、根据已有列修改其他列
目的:将Species列等于’setosa’并且 L*W列大于10的,修改 L*W>10列的值为’yes’。
1)先看下筛选行的方法:
# 单条件筛选
df_data[df_data['Species']=='setosa']
# 多条件筛选
df_data[(df_data['Species']=='setosa') & (df_data['L*W']>10)]
2)基于上面的知识,实现,将Species列等于’setosa’并且 L*W列大于10的,修改 L*W>10列的值:
# 先新增一个名为 L*W>10的列,初始值为空字符串
df_data['L*W>10']=''
# (单条件)Species列等于'setosa',修改 L*W>10列 为'yes'
df_data.loc[df_data['Species']=='setosa','L*W>10'] = 'yes'
# (多个条件)筛选Species列等于'setosa'并且 L*W列大于10的,修改其对应的 L*W>10列的值
df_data.loc[(df_data['Species']=='setosa') & (df_data['L*W']>17),'L*W>10'] = '>17'
# df_data结果