【问题标题】:Python Pandas get a value from the cell if two columns have a values如果两列有值,Python Pandas 从单元格中获取一个值
【发布时间】:2021-08-17 00:21:25
【问题描述】:

我正在学习 python 和 pandas,但遇到了麻烦。

我有一个数据框和 CSV,例如:

A B C
A 1 syfgusj
A 2 adaddsfd
B 1 adsghfjgftrds
B 2 adergtw
C 1 adergtw
C 2 addfgftre

我正在尝试从“A”和“B”列中的值附近的“c”列中获取值:

我正在尝试做类似的事情:

If df[(df['A'] == "A") & (df['B'] == "2")]:
        print *value from "C": adaddsfd*

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:
     df[(df['A'] == "A") & (df['B'] == "2")]['C']
    

    应该这样做。

    【讨论】:

    • 谢谢,它有效。你能再帮我一个吗?
    • 好的,继续。
    • 我会尽力解释。我在 A 和 B 列中有相同的 DF 和西里尔字母名称,我无法更改它。在我的程序中,我不能使用这个西里尔名称,只能使用拉丁语。我制作了如下字典:{"apple":"яблоко", "potato":"картошка"}。我可以在这本词典中找到一个英文单词,取一个西里尔文类似物并在代码中使用它:df[(df['A'] == "cyryllic word") & (df['B'] == "cyryllic word")]['C']?
    • @NothingHappen 我建议将此作为一个单独的问题,而不是评论。
    • @NothingHappen 如果您想使用字典将西里尔字母替换为英文单词,您可以使用df.A.map(sample_dict)。
    【解决方案2】:

    如果你只想打印一个字符串,你可以这样做:

    df.loc[df['A'].eq('A') & df['B'].eq('2')]['C'].item()
    

    它会给你:

    'adaddsfd'
    

    注意格式。如果“B”列是整数,则应将 2 而不是“2”作为条件。

    【讨论】:

    • 我可以在eq() 中使用df['A'].eq('A') 变量而不是值吗?我应该怎么做?例如:col_var = "C"、df['A'].eq(col_var)
    • 是的,您可以使用变量,它会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2016-10-31
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多