【问题标题】:how to use results of a column as column references? python如何使用列的结果作为列引用? Python
【发布时间】:2020-01-29 05:04:44
【问题描述】:

您将如何使用 pandas 数据集中变量的结果以迭代方式调用与结果同名的不同列。如果一列的结果是字母,而其他列的标题是这些字母,那么如何将字母列的结果用作列名?

以这个数据集为例

letter a b c d
a      1 3 4 2  
d      4 3 2 1 
c      2 1 4 3
d      3 4 2 1

想要的结果

letter a b c d  correct answer
a      1 3 4 2  1  
d      4 3 2 1  1 
c      2 1 4 3  4
d      3 4 2 1  1

如何创建在所需结果中看到的正确答案变量

【问题讨论】:

  • 首先要澄清一些假设:我们是否假设永远只有一个匹配,而不是多个匹配?没有匹配的情况会发生什么?
  • 假设只有一场比赛。理想情况下,如果不匹配,则返回 N/A。
  • 我认为你错过了我的意思;我会尽力解释得更好。我希望对于每一行,“正确答案”变量将返回变量“字母”中字母的列。 d 在字母中第二次出现这一事实并不重要,而 b 不存在也不重要。

标签: python pandas dataframe


【解决方案1】:

假设您已将letter 设置为索引,我想您可以执行以下操作:

df['correct_answer'] = df.apply(lambda x: x.loc[x.name], axis=1)

产量:

        a  b  c  d  correct_answer
letter                            
a       1  3  4  2               1
d       4  3  2  1               1
c       2  1  4  3               4
d       3  4  2  1               1

【讨论】:

    【解决方案2】:

    这可能会有所帮助:pandas DataFrame diagonal

    这基本上是在搜索身份对角线,即当 rowname == colname 时。应该足以让您入门。

    【讨论】:

    • 我确定不能保证匹配总是落在对角线上...
    • 好吧,如果它不是对角线图案,我希望应用它。我将编辑数据,这样它就不起作用了。
    • 您可以在技术上执行行名和列名的交集,并使数据框对称,然后使对角线方法起作用
    • 这也会减少搜索空间
    猜你喜欢
    • 2012-10-01
    • 2021-11-12
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多