pandas - 将数据映射到地面实况列表

标签 pandas

我在以下 Python 列表中有真实数据:

ground_truth = [(A,16), (B,18), (C,36), (A,59), (C,77)]

所以任何值(value)来自:
0-16 gets mapped to A, 
17-18 maps to B, 
19-36 maps to C,
37-59 maps to A 
60-77 maps to C
and so on

我正在尝试从数字中映射时间序列输入,例如
[9,15,29,32,49,56, 69]  to its respective classes like:
[A, A, C, C, A, A,  C]

假设我的输入是 Pandas 系列,例如:
in = pd.Series([9,15,29,32,49,56, 69])

如何进入系列 [A, A, C, C, A, A, C] ?

最佳答案

这是我的方法:

gt = pd.DataFrame(ground_truth)

# bins for cut
bins = [0] + list(gt[1])

# categories
cats = pd.cut(pd.Series([9,15,29,32,49,56, 69]), bins=bins, labels=False)

# labels
gt.loc[cats, 0]


0    A
0    A
2    C
2    C
3    A
3    A
4    C
Name: 0, dtype: object

或者,不创建新数据框:
labels = np.array([x for x,_ in ground_truth])
bins = [0] + [y for _,y in ground_truth]        

cats = pd.cut(pd.Series([9,15,29,32,49,56, 69]), bins=bins, labels=False)

labels[cats]

这使:
array(['A', 'A', 'C', 'C', 'A', 'A', 'C'], dtype='<U1')

关于pandas - 将数据映射到地面实况列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297569/

相关文章:

python - 如何组合我的数据框的列来创建一个日期时间列,我可以将其用作索引?

python - Pandas .groupby 自动选择列

python - Pandas 在条件下乘以列值

python - 如何使用最新版本的 Pandas 进行 OLS 回归

python - 如何确保在 pd.merge 期间不会丢失任何行

python - Pandas 数据框按多列分组

python - 如何使用 pandas groupby 对多列求和?

python - 从 csv 文件绘制纬度和经度

python - 读取csv文件的一部分

python - 根据另一列中的条件填充多个数据框列