python-3.x - 替换单列熊猫中的行值
问题描述
我不断收到警告“试图在 DataFrame 的切片副本上设置一个值”。我该如何解决?任何替代品
//check for NAN
//capitalise first letter
//assign 'Male' for 'm',
//assign 'Female for 'f'
myDataFrame.to_csv('new_H.csv')
genderList = myDataFrame.loc[:,"Gender"] //extract Gender column
for i in range(0, len(genderList)):
if type(genderList[i]) == float: #check for empty spaces
genderList[i] = 'NAN'
elif genderList[i].startswith('f'):
genderList[i] = 'Female'
elif genderList[i].startswith('m'):
genderList[i] = 'Male'
解决方案
for row in myDataFrame.itertuples():
if type(row["Gender"]) == float:
row["Gender"] = 'NAN'
elif row["Gender"].startswith('f'):
row["Gender"] = 'Female'
elif row["Gender"].startswith('m'):
row["Gender"] = 'Male'
该行genderList = myDataFrame.loc[:,"Gender"]
会导致警告,因为您正在分配一个数据框,这可能会导致复制,因此更新可能不会应用于原始数据框。在上面的代码中,我使用itertuples
了一种更“正确”的方法来遍历 pandas 中的行。如果您想对特定行执行操作,您确实需要先创建一个切片 - 您只需更新每一行中该列的值。
据我所知,您的目标是根据以前的值替换 Gender 上的值。在这种情况下,我建议检查replace
出于该确切原因而制作的 pandas 方法以及filter
. 但是,由于您的过滤器非常简单,您可以执行以下操作:
myDataFrame[myDataFrame["Gender"].str.contains('^f')] = "Female"
更新所有女性。我使用了数据帧()的切片,myDataFrame[...]
条件是myDataFrame["Gender"].str.contains('^f')
。
推荐阅读
- c# - 使用数组通过循环给文本框文本
- latex - Ifnum 和缺少 } 插入表格环境中
- r - 为什么使用并行的这两个函数的处理时间表现不同?
- php - in_array() 期望参数 2 是数组,给定字符串
- c# - 复制游戏对象的所有变换值?
- typescript - 如何在离子应用程序中从电容器浏览器的回调中正确检索重定向 URL
- random - 如何在 ELM 随机种子数中使用当前时间
- answer-set-programming - 我有什么似乎正在运行的 ASP 代码,但它没有返回任何答案集?
- javascript - 从数据库更新值。反应原生
- html - 添加图像到 react/gatsby markdown html/md 混合文件