如何优化以下pandas代码:data.groupby('info').apply(lambda x: x.sort_values('dealtime'))
时间: 2023-03-29 07:00:41 浏览: 145
可以使用pandas的sort_values方法来代替apply和sort_values的组合,代码如下:
data.sort_values(['info', 'dealtime'], inplace=True)
相关问题
data = pd.DataFrame({"电影":self.movies,"评分":rating,"导演":cast,"主演":cast}) data['电影'] = data['电影'].apply(lambda x: x.text) data['评分'] = data['评分'].apply(lambda x: x.text) data['导演'] = data['导演'].apply(lambda x: x.text.split('\n')[0][3:].split('/')) data['主演'] = data['主演'].apply(lambda x: x.text.split('\n')[1][3:].split('/'))
这段代码是使用 Pandas 库创建了一个 DataFrame 对象,并对其中的某些列进行了一些数据清洗操作。具体来说:
- 第一行代码创建了一个 DataFrame 对象,其中包含了四列数据,分别为电影名称、评分、导演和主演。这些数据可能来自某个网站或者其他来源。
- 第二行代码对“电影”这一列进行了数据清洗操作,使用 apply() 方法和一个 lambda 函数将每一行数据中的 HTML 标签(如 <a> 和 </a>)去掉,只保留文本内容。
- 第三行代码对“评分”这一列进行了类似的操作,使用 apply() 方法和一个 lambda 函数将每一行数据中的 HTML 标签去掉,只保留评分数值。
- 第四行和第五行分别对“导演”和“主演”这两列进行了类似的操作,使用 apply() 方法和一个 lambda 函数将每一行数据中的 HTML 标签去掉,并将导演和主演的姓名提取出来,存储为一个列表。这里使用了一些字符串操作,如 split() 方法和列表切片。
总之,这段代码的作用是将一些混乱的数据整理成为一个比较规范的 DataFrame 对象,方便后续处理和分析。
for i in range (data.loc[:,data.dtypes.values=="int64"].shape[1]): data.loc[i,data.dtypes.values=="int64"]= data.loc[i,data.dtypes.values=="int64"].apply(lambda x: float(x))为什么没有转化成浮点数
这段代码没有成功将整数转换为浮点数的原因可能是因为在 apply() 函数内部将整数转换为浮点数时出现了错误。更具体地说,可能是通过 apply() 函数将整数转换为浮点数的方法不正确。
下面是一种可能的解决方案:
```
for i in range(data.loc[:, data.dtypes.values == "int64"].shape[1]):
data.loc[:, data.dtypes.values == "int64"] = data.loc[:, data.dtypes.values == "int64"].astype(float)
```
该代码使用了 astype() 函数将整数转换为浮点数。astype() 函数可以将一个 pandas 数据框中的列转换为指定的数据类型。在这里,我们指定将整数转换为浮点数。注意,我们使用了 loc[] 函数来选择整数列,而不是使用 apply() 函数。
阅读全文