gpt4 book ai didi

python - 使用 pandas 数据框的 .loc 函数

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:50 25 4
gpt4 key购买 nike

我有一个 Pandas 数据框,其中一列是:

 a = [1,0,1,0,1,3,4,6,4,6]

现在我想创建另一列,这样任何大于 0 且小于 5 的值都被分配为 1,其余值被分配为 0,即:

a = [1,0,1,0,1,3,4,6,4,6]
b = [1,0,1,0,1,1,1,0,1,0]

现在我已经做到了

dtaframe['b'] = dtaframe['a'].loc[0 < dtaframe['a'] < 5] = 1
dtaframe['b'] = dtaframe['a'].loc[dtaframe['a'] >4 or dtaframe['a']==0] = 0

但是代码抛出错误。怎么办?

最佳答案

您可以使用 between获取 bool 值,然后 astype 将 bool 值转换为 0/1:

dtaframe['b'] = dtaframe['a'].between(0, 5, inclusive=False).astype(int)

结果输出:

   a  b
0 1 1
1 0 0
2 1 1
3 0 0
4 1 1
5 3 1
6 4 1
7 6 0
8 4 1
9 6 0

编辑

对于多个范围,您可以使用 pandas.cut :

dtaframe['b'] = pd.cut(dtaframe['a'], bins=[0,1,6,9], labels=False, include_lowest=True)

您需要注意如何定义 bins。使用 labels=False 将为每个 bin 返回整数指示符,这恰好与您提供的标签相对应。您还可以手动指定每个箱子的标签,例如labels=[0,1,2]labels=[0,17,19]labels=['a','b','c '] 等。如果您手动指定标签,您可能需要使用 astype,因为它们将作为类别返回。

或者,您可以结合使用 locbetween 来手动指定每个范围:

dtaframe.loc[dtaframe['a'].between(0,1), 'b'] = 0
dtaframe.loc[dtaframe['a'].between(2,6), 'b'] = 1
dtaframe.loc[dtaframe['a'].between(7,9), 'b'] = 2

关于python - 使用 pandas 数据框的 .loc 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com