python - 如何使用 pandas 创建具有条件日期时间的新列

标签 python pandas datetime dataframe

我正在尝试添加一个包含具有以下条件的标签的新列:

  • 如果“time”中的值与 dt 之间的时间差 < 2 小时,则为标签 1
  • 其他情况为标签 0

我目前的想法:

df = pd.read_csv('./datetimecek.csv')
df['time'] = pd.to_datetime(df['datetime'])

dt = datetime.strptime("19/02/18 19:00", "%d/%m/%y %H:%M")

datetime            time
2018/02/19 16:00    2018-02-19 16:00:00
2018/02/19 17:00    2018-02-19 17:00:00
2018/02/19 18:00    2018-02-19 18:00:00
2018/02/19 19:00    2018-02-19 19:00:00

然后我定义了 timedelta

a = timedelta(hours=2)

def label(c):
if dt - df['time'] < a:
    return '1'
else:
    return '0'

然后

df['label'] = df.apply(label, axis=1)

但我收到错误:“系列的真实值不明确。使用a.empty、a.bool()...

我可以解决这个问题吗?

最佳答案

如果要设置字符串01:

df['label'] = np.where(dt - df['time'] < a, '1','0')

或者@Dark的替代方案:

df['label'] = (dt - df['time'] < a).astype(int).astype(str)
print (df)
           datetime                time label
0  2018/02/19 16:00 2018-02-19 16:00:00     0
1  2018/02/19 17:00 2018-02-19 17:00:00     0
2  2018/02/19 18:00 2018-02-19 18:00:00     1
3  2018/02/19 19:00 2018-02-19 19:00:00     1

print (type(df.loc[0, 'label']))
<class 'str'>
<小时/>

如果要设置整数01:

df['label'] = (dt - df['time'] < a).astype(int)

替代方案:

df['label'] = np.where(dt - df['time'] < a, 1,0)
print (df)
           datetime                time label
0  2018/02/19 16:00 2018-02-19 16:00:00     0
1  2018/02/19 17:00 2018-02-19 17:00:00     0
2  2018/02/19 18:00 2018-02-19 18:00:00     1
3  2018/02/19 19:00 2018-02-19 19:00:00     1

print (type(df.loc[0, 'label']))
<class 'numpy.int32'>
<小时/>

Is there anyway I can fix this?

是的,需要将 df 更改为 c 才能使用标量:

def label(c):
    if dt - c['time'] < a:
        return '1'
    else:
        return '0'

关于python - 如何使用 pandas 创建具有条件日期时间的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414814/

相关文章:

python - Pandas 在设置输出目录时引发错误

c# - 具有相同格式的字符串未被识别为有效日期时间

python - 使用基于日期/时间的对象进行 Django 单元测试

python - 导入错误 : No module named newspaper

python - 如何强制 for 循环计数器在 Python3 中跳过迭代?

pandas - java.lang.NoSuchMethodError : com. google.flatbuffers.FlatBufferBuilder.createString(Ljava/lang/CharSequence;)我

python - 从 CSV 导入格式错误转换日期时间

php - 如何在 Twig 模板中呈现 DateTime 对象

python - Jinja2 - 检查一个查询集元素是否在另一个查询集中

python - 缺少来自 python 脚本的范围错误松弛消息