根据pandas数据框中的另一列设置列值

时间:2015-09-29 19:51:02

标签: 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()函数,但我还没有找到关于如何让解决方案在新列上工作的任何好文档,只有当我要更改我的屏幕栏中的现有值。

如果这是重复的,我道歉,但我一直在寻找,但尚未找到任何解决方案。

1 个答案:

答案 0 :(得分:1)

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

Worker workerObject = new Worker();
Thread workerThread = new Thread(workerObject.DoWork);

workerThread.Start();

public void DoWork()
{
    while (!_shouldStop)
    {
        //REFRESH YOUR IMAGE
    }
}

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

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