如何比较Pandas DataFrame中的两列,并根据匹配结果输出其他列的值?

y4ekin9u  于 2023-06-04  发布在  其他
关注(0)|答案(1)|浏览(189)

所以我有一个pandas数据框。

A: 3, 4, 1, 2, 1,
B 1, 2, 3, 4
C Red, Blue, Yellow, Green
D Yes, No, Maybe, True

我希望能够做的是顺序地检查列A和列B,如果有匹配,则输出相对于B的C和D。
例如,上面的数据框将转换为A Yellow、绿色、Red、Blue、Red B Maybe、True、Yes、No、Yes
我是python和pandas的新手,所以我可能会错过一些简单的东西,但我想不出这个问题的解决方案,也不确定从哪里开始寻找答案。任何帮助都将不胜感激
-Smoggs
许多不同的想法。我知道我应该使用iloc来定位单元格中的值,但我不确定如何输出它旁边的结果。我在这里真的很茫然

kuhbmx9i

kuhbmx9i1#

首先,如果你需要根据另一个索引列(比如这里B相对于C和D),你可以在B上使用set_index方法。

df = pd.DataFrame({
    "A": [3, 4, 1, 2],
    "B": [1, 2, 3, 4],
    "C": ["Red", "Blue", "Yellow", "Green"],
    "D": ["Yes", "No", "Maybe", True]
})

df.set_index("B", inplace=True)

请注意inplace参数,它直接对df变量执行更改。
然后,你可以使用A索引得到C和D:

print(df.loc[df["A"]][["C", "D"]])
# output:
#         C      D
# B               
# 3  Yellow  Maybe
# 4   Green   True
# 1     Red    Yes
# 2    Blue     No

请注意,我们在这里使用loc而不是iloc。不同之处在于loc将使用dataframe索引(即使使用string),而iloc将使用底层数据数组中的位置(更多细节请参见文档here)。

相关问题