python - Python pandas 转换对象列中的单个值
问题描述
下面解决了
问题:无法.groupby()
排序,因为单个值是string
类型对象。Index 5
, ColA 10
for的值Data In
是问题所在。Index 5
for ColA
, ,的值10
是一个字符串对象。pd.to_numeric()
如果仅按该列排序,则正确排序该列。
问题:ColA
可以转换单个值吗?
方法:
ind = pd.to_numeric(df['ColA'], errors='coerce').fillna(999).astype(int).argsort()
df = df.reindex(ind)
df = df.groupby(df.ColA).apply(pd.DataFrame.sort_values, 'ColB')
df = df.reset_index(drop=True)
数据在:
Index ColA ColB ColC
0 2 14-5 MumboJumbo
1 4 18-2 MumboJumbo2
2 2 24-5 MumboJumbo3
3 3 23-8 MumboJumbo4
4 2 13-6 MumboJumbo5
5 10 86-1 MumboJumbo6
6 10 42-1 MumboJumbo7
7 2 35-6 MumboJumbo8
8 Load NaN MumboJumbo9
期望的输出:
Index ColA ColB ColC
0 2 13-6 MumboJumbo5
1 2 14-5 MumboJumbo
2 2 24-5 MumboJumbo3
3 2 35-6 MumboJumbo8
4 3 23-8 MumboJumbo4
5 4 18-2 MumboJumbo2
6 10 42-1 MumboJumbo7
7 10 86-1 MumboJumbo6
8 Load NaN MumboJumbo9
谢谢!
解决方案
我不太了解问题中的问题,但您可以在DataFrame
使用iloc
(位置索引)或loc
(标签索引)中选择特定值。由于您要求替换数据集中第一列第五行中的值,因此我们使用iloc
.
df.iloc[from_row:to_row,column_position]
要将第 5 行中的值转换'10'
为ColA
an,int('10')
您只需选择它然后更新它。
df.iloc[5:6,0] = 10
如果您不知道需要转换的值的位置,那么iloc
也loc
无济于事。
有几种方法可以将列中的所有值转换为特定的dtype
. 一种方法是使用lambda
-function。
df[column_name].apply(lambda x: int(x))
以上将lambda
中断,因为您的数据还包含字符串Load
,并且您无法将其转换为int
. 解决此问题的一种方法是向您的lambda
.
df[column_name].apply(lambda x: int(x) if something else something)
鉴于您问题中的数据,最直接的方法是检查是否x
不是'Load'
:
df[column_name].apply(lambda x: int(x) if x != 'Load' else x)
如果您的列中有大量实际字符串,这将变得很麻烦。如果您想使用 alambda
您可以列出实际字符串。然后检查是否x
在列表中。
list_of_strings = ['Load', 'Road', 'Toad']
df[column_name].apply(lambda x: int(x) if x not in list_of_strings else x)
另一种方法是编写一个单独的函数来管理使用 try/catch 块的转换。
推荐阅读
- javascript - 从 date-fns 中的 formatDuration() 返回短单位的最佳方法是什么?
- python - 多处理中的 Matplotlib
- sql - 在 SQL Server 中连接不同服务器和不同数据库的两个表的最佳方法
- django - 在 Django 管理员中添加用户的电子邮件时出现问题
- firebase - flutter web: 没有创建 Firebase App '[DEFAULT]' - 在 FlutterFire 中调用 Firebase.initializeApp()
- python - 在使用 Pandas 的条件下将一列 csv 文件转录为另一个 csv
- node.js - 将 React 应用程序部署到 Heroku 时出现问题 - 即使 package.json 在那里也找不到
- python - 每次迭代使用不同的变量多次运行 python 脚本
- sql - 在 postgresql 中使用 jsonb 结构
- json - 将所有属性集收集到一个样式表中并包含在 principal.xsl