假设我有整数0到100的数据帧。我想把这些值分为3部分,低、中、高,低小于33,高大于66,中介于33和66之间。所以我用
df['low'] = df['int'] <= 33
df['mid'] = 33 < df['int'] < 66
df['high'] = df['int'] >= 66
我得到了一个错误
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_12080/1299746928.py in <module>
1 df['low'] = df['int'] <= 33
----> 2 df['mid'] = 33 < df['int'] < 66
3 df['high'] = df['int'] >= 66
c:\program files\python37\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
1536 def __nonzero__(self):
1537 raise ValueError(
-> 1538 f"The truth value of a {type(self).__name__} is ambiguous. "
1539 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
1540 )
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我已经尝试过if-else语句和和
以及其他操作符。低和高起作用,但中间不起作用。
请问我能知道附近的路吗?
当你收到评论时,你可以在(33,66)
df['mid'] = df['int'].between(33, 66)
但你也可以把它写成
df['mid'] = (33 < df['int']) & (df['int'] < 66)
您还可以使用(不低)和(不高)
df['mid'] = ~df['low'] & ~df['high']
最小工作示例
import pandas as pd
data = {
'int': range(0, 100, 10),
}
df = pd.DataFrame(data)
df['low'] = df['int'] <= 33
df['high'] = df['int'] >= 66
df['mid1'] = (33 < df['int']) & (df['int'] < 66)
df['mid2'] = ~df['low'] & ~df['high']
df['mid-between'] = df['int'].between(33, 66)
print(df)
结果:
int low high mid1 mid2 mid-between
0 0 True False False False False
1 10 True False False False False
2 20 True False False False False
3 30 True False False False False
4 40 False False True True True
5 50 False False True True True
6 60 False False True True True
7 70 False True False False False
8 80 False True False False False
9 90 False True False False False
顺便说一句:
如果你使用pandas.cut()
bins = pd.cut(df['int'], [-1, 33, 66, 100], labels=['low', 'mid', 'high'])
print( bins )
然后你就可以
0 low
1 low
2 low
3 low
4 mid
5 mid
6 mid
7 high
8 high
9 high
import pandas as pd
data = {
'int': range(0, 100, 10),
}
df = pd.DataFrame(data)
min_value = min(df['int']) - 1
max_value = max(df['int']) + 1
bins = pd.cut(df['int'], [min_value, 33, 66, max_value], labels=['low', 'mid', 'high'])
print(bins)
但它更像是开闭
范围(在数学中(a,b)
):
min < x <= 33
33 < x <= 66
66 < x <= max
我正在使用CodeIgniter 3和PostgreSQL 9.4数据库。如果数据库中相应列的数据类型是布尔值,有没有办法在PHP中获取布尔值? 我使用CodeIgniters查询生成器类,如下所示: 用户表中的所有布尔值都由字符串('t'和'f')表示。
问题内容: Go的布尔类型的零值为。Postgres支持未定义的BOOL类型,表示为NULL。尝试从Go中的Postgres获取BOOL值时,这会导致问题: 输出: 解决这个问题的最惯用的方法是什么?我想象的两种解决方案都不是很吸引人: 不要使用Go的类型。相反,我可能会使用一个字符串,并进行自己的转换,这占 在Postgres中,请始终通过使用或其他方式确保BOOL为TRUE或FALSE 。 问
如何用Java解析JSON文件中的数据?
代码: 输出:
我有我的科特林班 以下是我获得价值的方式 但问题是,我没有任何问题地获得了字段的价值。但是 布尔字段始终保持 null。我已经用一些其他布尔前缀,这很好。当我使用 或 时,我没有得到布尔值。任何人都可以解释我为什么我面临这个问题。#AskFirebase
我有一个DataFrame,它由单个列和单个条目组成。有没有比以下更直接的方法来获取该单个值: