gpt4 book ai didi

python - 根据条件使用 python 中另一列的值创建新列

转载 作者:行者123 更新时间:2023-11-30 22:54:41 24 4
gpt4 key购买 nike

我有一个数据框,想根据条件创建一个新列,在这个新列中,如果满足特定条件,则该值将来自另一列,否则需要为零。原始数据帧是;

df2 = pd.read_csv('C:\Users\ABC.csv')
df2['Date'] = pd.to_datetime(df2['Date'])
df2['Hour'] = df2.Date.dt.hour
df2['Occupied'] = ''
Date Value Hour Occupied
2016-02-02 21:00:00 0.6 21
2016-02-02 22:00:00 0.4 22
2016-02-02 23:00:00 0.4 23
2016-02-03 00:00:00 0.3 0
2016-02-03 01:00:00 0.2 1
2016-02-03 02:00:00 0.2 2
2016-02-03 03:00:00 0.1 3
2016-02-03 04:00:00 0.2 4
2016-02-03 05:00:00 0.1 5
2016-02-03 06:00:00 0.4 6

如果 df2.Hour 大于或等于 9,我希望“占用”列中的值与 df2.Value 相同,否则“占用”列中的值将为零。我已尝试以下代码,但它无法按我想要的方式工作(它打印与 df2.Value 相同的值,而不考虑 else 语句);

for i in df2['Hour']:
if i >= 9:
df2['Occupied'] = df2.Value
else:
df2['Occupied'] = 0

知道这有什么问题吗?

最佳答案

使用where使用您的 bool 条件,这将设置所有行值而不是逐行迭代:

In [120]:
df2['Occupied'] = df2['Value'].where(df2['Hour'] >= 9, 0)
df2

Out[120]:
Date Value Hour Occupied
0 2016-02-02 21:00:00 0.6 21 0.6
1 2016-02-02 22:00:00 0.4 22 0.4
2 2016-02-02 23:00:00 0.4 23 0.4
3 2016-02-03 00:00:00 0.3 0 0.0
4 2016-02-03 01:00:00 0.2 1 0.0
5 2016-02-03 02:00:00 0.2 2 0.0
6 2016-02-03 03:00:00 0.1 3 0.0
7 2016-02-03 04:00:00 0.2 4 0.0
8 2016-02-03 05:00:00 0.1 5 0.0
9 2016-02-03 06:00:00 0.4 6 0.0

关于python - 根据条件使用 python 中另一列的值创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37683997/

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