我想用pandas 读取一列 类目 1.5w-2w 7.5w-10w 转化为数组的均值
时间: 2024-03-20 14:39:47 浏览: 116
可以使用Pandas库中的apply函数,将每个单元格的字符串转换为均值,并将结果存储在一个新的列中。下面是一个示例代码:
```python
import pandas as pd
def convert_range(range_str):
start, end = range_str.split('-')
start_num = float(start.replace('w', ''))
end_num = float(end.replace('w', ''))
return (start_num + end_num) / 2
df = pd.read_csv('your_file.csv') # 读取包含数据的csv文件
df['mean_array'] = df['category'].apply(convert_range) # 将函数应用到category这一列,并将结果存储在新的列mean_array中
```
这样,您就可以将函数应用到整个列中,将每个单元格的字符串转换为均值,并将结果存储在一个新的列中。
相关问题
用pandas 读取一列 例如7.5w-10w 转为 75000 100000两列 举例
假设你的数据已经存储在一个名为 `df` 的 pandas DataFrame 中,其中包含一列名为 `salary` 的工资数据,数据格式为7.5w-10w,你可以使用 pandas 的 `str` 方法、`split` 方法和 `apply` 函数来将 `salary` 列中的工资数据转化为两列分别表示7.5w和10w的数字。
下面是一个示例代码:
```python
import pandas as pd
def convert_salary_range(s):
s = s.replace('w', '') # 去掉字符串中的 'w' 字符
salary_range = s.split('-') # 将字符串按照 '-' 分割为两个部分
if len(salary_range) == 2: # 如果分割后得到两个部分
return pd.Series({'min_salary': float(salary_range[0])*10000, 'max_salary': float(salary_range[1])*10000})
else:
return pd.Series({'min_salary': None, 'max_salary': None})
df[['min_salary', 'max_salary']] = df['salary'].apply(convert_salary_range)
```
上述代码中,`convert_salary_range` 函数将工资数据转化为两个数字,即最低工资和最高工资。首先去掉字符串中的 `w` 字符,然后按照 `-` 分割为两个部分。如果分割后得到两个部分,则将两部分转化为数字并存储在一个 pandas Series 中,然后返回该 Series。如果分割后得到不到两个部分,则返回两个 `None` 值。最后将转化后的两个数字存储在名为 `min_salary` 和 `max_salary` 的新列中。
需要注意的是,上述代码中假设工资数据中的单位为 `w`,如果实际单位不同,需要根据实际情况进行修改。
阅读全文