python - 根据 Pandas 数据框中的另一列设置列值

标签 python pandas

我有一个数据框,主要填充与程序输入字段相关的文本数据,用于跟踪测试结果。我的一个专栏跟踪程序中的屏幕位置,我想在对输入字段进行排序时保持屏幕的顺序。我意识到我可以通过为我的屏幕设置一个类别来做到这一点,但我担心从测试计划中导入拼写错误,所以我想在单独的列中为我的每个屏幕设置一个数值并将其用于我的排序。

现在我的数据是这样的:

Screen Order   Screen       Input Field  Result
               Screen A     ....         ....
               Screen A     ....         ....
               Screen B     ....         ....
               Screen C     ....         ....
               Screen D     ....         ....
               Screen D     ....         ....
               Screen E     ....         ....

我正在尝试让它看起来像这样,尽管屏幕可能出现故障:

Screen Order   Screen       Input Field  Result
1              Screen A     ....         ....
1              Screen A     ....         ....
2              Screen B     ....         ....
3              Screen C     ....         ....
4              Screen D     ....         ....
4              Screen D     ....         ....
5              Screen E     ....         ....

我已经搜索了几个小时,但一直没有找到任何有用的东西,虽然我觉得这应该很简单。我认为解决方案将使用字典和 applymap() 函数,但我无法找到任何关于如何使解决方案在新列上工作的好文档,只有当我要更改现有值时在我的屏幕栏中。

如果这是重复的,我深表歉意,但我一直在搜索,但尚未找到任何解决方案。

最佳答案

EDIT1:不同,你需要字典来转换。

dic = {'Screen A': 1, 'Screen B': 2, 'Screen C': 3,'Screen D': 4,'Screen E': 5}
print df
     Screen
0  Screen A
1  Screen A
2  Screen B
3  Screen C
4  Screen D
5  Screen D
6  Screen E

df['Screen Order'] = df['Screen'].apply(lambda x: dic[x])
#reordering
df = df[['Screen Order', 'Screen' ]]

print df
   Screen Order    Screen
0             1  Screen A
1             1  Screen A
2             2  Screen B
3             3  Screen C
4             4  Screen D
5             4  Screen D
6             5  Screen E

我将最后一个字符转换为数字。 有关转换的更多信息是 here .

print df
     Screen
0  Screen A
1  Screen A
2  Screen B
3  Screen C
4  Screen D
5  Screen D
6  Screen E

#convert each last letter from column screen to number
# https://stackoverflow.com/a/4528997/2901002
df['Screen Order'] = df['Screen'].apply(lambda x: ord(x[-1].lower()) - 96)
#reordering columns
df = df[['Screen Order', 'Screen' ]]

print df
   Screen Order    Screen
0             1  Screen A
1             1  Screen A
2             2  Screen B
3             3  Screen C
4             4  Screen D
5             4  Screen D
6             5  Screen E

关于python - 根据 Pandas 数据框中的另一列设置列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32852604/

相关文章:

python - Snakemake,如何为两个独立参数构建循环

python - 新窗口中的控制台

python - 使用 Python 3.x 基本获取 URL 的 HTML 正文

python Pandas : Simple example of calculating RMSE from data frame

python - 使用Apply、Python 3.6从函数返回值更新数据框的多个字段

python - 如何创建 python 空数据帧,其中 df.empty 结果为 True

python - 如何使用 Keras RNN 模型预测 future 的日期或事件?

python - 零填充 Pandas 列

python - 使用另一个列表计算一个列表中元素的出现次数时,有什么更快的方法

python - 如何遍历数据框中的列并同时更新两个新列?