df['salary'].split('-')
时间: 2023-09-23 11:13:25 浏览: 42
这是一个错误的代码,因为 DataFrame 中的列不能直接使用字符串方法。如果要对 DataFrame 中的列进行字符串操作,可以使用 pandas 的 str 方法。另外,如果要将字符串类型的薪资范围拆分成最小薪资和最大薪资两列,可以使用 str.split 方法并指定 expand=True,将拆分后的结果转换成新的 DataFrame,然后将其合并到原始 DataFrame 中。以下是示例代码:
```
new_df = df['salary'].str.split('-', expand=True)
new_df.columns = ['min_salary', 'max_salary']
df = pd.concat([df, new_df], axis=1)
```
相关问题
(2)自定义函数,将salary列数据(岗位薪资范围)的最大值和最小值的平均值作为该生的薪资水平,生成新的df1;(涉及split函数、lambda函数、map函数、apply函数)
可以使用以下代码实现:
```python
import pandas as pd
# 读取原始数据
df = pd.read_csv("data.csv")
# 定义自定义函数,计算薪资水平
def calculate_salary_level(row):
salary_range = row["salary"]
# 将岗位薪资范围拆分为最大值和最小值
salary_list = salary_range.split("-")
min_salary = int(salary_list[0])
max_salary = int(salary_list[1].replace("k", "")) * 1000
# 计算薪资水平
salary_level = (min_salary + max_salary) / 2
return salary_level
# 使用apply函数应用自定义函数,生成新的df1
df1 = df.copy()
df1["salary_level"] = df1.apply(lambda row: calculate_salary_level(row), axis=1)
print(df1.head())
```
解释一下代码:
首先使用`pandas`库的`read_csv`函数读取原始数据,存储在`df`变量中。
然后定义了一个叫做`calculate_salary_level`的函数,这个函数接受一个`pandas`中的`Series`类型的数据,代表一行数据,函数的作用是将该行数据的岗位薪资范围拆分为最大值和最小值,并计算它们的平均值作为薪资水平。
使用`apply`函数将自定义函数应用于每一行数据,在新的列`salary_level`中存储计算出来的薪资水平。
最后使用`print`函数打印出新的数据框`df1`的前几行,以检查生成结果是否正确。
''' # 钱包余额 money= 50 # 消费后 ice = 10 colo = 5 money= money-ice-colo print('钱包余额:',money,'元') name = '传智播客' stock_price = 19.99 stock_code = "003032" stock_price_daily_grown_factor = 1.2 grown_days = 7 finally_stock_price=stock_price * stock_price_daily_grown_factor ** grown_days print(f"公司:{name},股票代码:{stock_code},当前股价{stock_price}") print("每日的增长系数是:%.1f,经过%d的增长后,股价达到了:%.2f"%(stock_price_daily_grown_factor,grown_days,finally_stock import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import xlwt df = pd.read_excel(r"D:\学习\Employee_income.xls",sheet_name='emp_income') # 选择数值列进行计算 df_numeric = df.select_dtypes(include=np.number) corrresult1=df_numeric['age'].corr(df_numeric['salary']) print('age和salary的相关系数',corrresult1) corrresult2=df_numeric.loc[:,['age', 'salary', 'subsidy']].corr() print('age和salary、subsidy的相关系数\n',corrresult2) print('返回个相关系数矩阵\n',df_numeric.corr()) corrresult3=df_numeric.corr() print('返回一个相关系数矩阵\n', corrresult3) sns.heatmap(corrresult3, annot=True, cmap='YlGnBu', linewidths=1.2) plt.show() ''' import pandas as pd import numpy as np data = pd.read_csv(r"D:\学习\goods_sales.csv",encoding='GBK') print(data) newData = data['商品信息'].str.split(';',3,True) newData.columns = ['品牌','分类','型号'] print(newData) df = data.drop('商品信息',axis=1).join(newData) result = df.groupby(by=['品牌'])['数量'].agg({'数量':np.sum}) print(result) telData = data['电话'].astype(str) areas = telData.str.slice(3,7) print(areas) newDf = data.drop('电话',axis=1).join(areas) print(newDf) result = newDf.groupby(by=['电话'])['数量'].agg({'数量':np.sum}) print(result)
这段代码主要是对数据进行处理和分析。首先,读取了一个 Excel 文件和一个 csv 文件,然后进行了一些数据清洗和分析操作。
其中,Excel 文件的数据是员工的收入情况,通过 Pandas 库进行了相关系数分析,并使用 Seaborn 库的热力图可视化展示了相关系数矩阵。
csv 文件是商品销售数据,通过 Pandas 库将商品信息列进行拆分,然后使用 groupby 函数按品牌和电话进行了数量统计,并将结果展示出来。最后,将电话列进行了分割,提取出区号,并进行了统计分析。