python - 如何比较系列中的两个值,而不是系列对象? Python 3.x

标签 python pandas compare series

我收到一条错误消息“ValueError:只能比较相同标记的系列对象”。据我所知,我正在比较两个系列对象而不是它们内部的值。但是,我认为 series[column] 给了你里面的值(value)。有人可以详细说明一下吗?我真的坚持在哪里可以找到这些信息,并且很乐意被指向正确的方向。 all_agesrecent_grads 是数据帧。

import pandas as pd

majors = recent_grads['Major'].unique()
rg_lower_count = 0

for x in majors:
    aa_major = all_ages[all_ages['Major'] == x]
    rg_major = recent_grads[recent_grads["Major"] == x]


    if rg_major["Unemployment_rate"] < aa_major["Unemployment_rate"]:
        rg_lower_count += 1

print(rg_lower_count)

最佳答案

See this old question of mine

你不能再这样做了。当你比较< , >您需要让索引对齐reindex您的系列中的一个与另一个相似。

我会这样编辑你的代码

import pandas as pd

majors = recent_grads['Major'].unique()
rg_lower_count = 0

for x in majors:
    aa_major = all_ages[all_ages['Major'] == x]
    rg_major = recent_grads[recent_grads["Major"] == x]

rg_major_unemp = rg_major["Unemployment_rate"]
aa_major_unemp = aa_major["Unemployment_rate"].reindex_like(rg_major_unemp)

if rg_major_unemp < aa_major_unemp:
    rg_lower_count += 1

print(rg_lower_count)

演示

与链接问题中的示例相同

import pandas as pd
x = pd.Series([1, 1, 1, 0, 0, 0], index=['a', 'b', 'c', 'd', 'e', 'f'], name='Value')
y = pd.Series([0, 2, 0, 2, 0, 2], index=['c', 'f', 'a', 'e', 'b', 'd'], name='Value')

x > y
ValueError: Can only compare identically-labeled Series objects
x.reindex_like(y) > y

c     True
f    False
a     True
e    False
b     True
d    False
Name: Value, dtype: bool

关于python - 如何比较系列中的两个值,而不是系列对象? Python 3.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969986/

相关文章:

java - 为什么我的 CompareTo 会因一般契约(Contract)违规错误而崩溃?

python - 触发 Pi Camera 时的多个图像实例

python - 有效地查找 numpy 数组中二进制字符串中的位位置

python - 在 pandas/python 的同一数据框中将两列合并为一列

python - Django JSON 文件到 Pandas Dataframe

c - C语言中如何比较float变量和double变量?

python - 通过 AdminSite.get_urls 添加非基于模型的 URL 不起作用

python - 使用 keras tokenizer 处理不在训练集中的新词

python - 从 AWS SageMaker 访问 Google BigQuery

compare - 计算相对 Levenshtein 距离 - 有意义吗?