python - 如何将以天为单位的 timedelta 转换为字符串?

标签 python string pandas dataframe timedelta

我已经区分了当前周开始和日期周开始之间的差异,其中日期是日期列。这个差异是以天为单位的。当我尝试定义函数将这些天数转换为 1 周差异、2 周差异等时。

我收到的错误为:

Cannot compare type 'Timedelta' with type 'str'

请帮我解决这个问题。我担心我在定义函数时是否错了?这是定义函数的代码:

def check(diff):
    for d in final_data['diff']:
        if  ((d > '0 days') and (d <= '7 days')): 
            weekdiff = 'OneWeekDiff'
        elif ((d > '8 days') and (d <= '14 days')):
            weekdiff = 'TwoWeekDiff'
        else:       
            weekdiff = 'Current Week'
    return weekdiff

为了找出两列之间的差异,我只需进行如下减法: Final_data['diff'] = Final_data['CurrentWeekStartDay'] - Final_data['InvoiceWeekstartDay']

打印(final_data['diff'] 0 14 天 1 14 天 2 14 天

最佳答案

您需要转换to_timedelta字符串 0 天7 天...:

然后我稍微修改了函数 - 删除循环和else。您可以apply DataFrame 列的函数:

def check(d):
    weekdiff = 'Current Week'
    if  ((d > pd.to_timedelta('0 days')) and (d <= pd.to_timedelta('7 days'))): 
        weekdiff = 'OneWeekDiff'
    elif ((d > pd.to_timedelta('8 days')) and (d <= pd.to_timedelta('14 days'))):
        weekdiff = 'TwoWeekDiff'
    return weekdiff

print (final_data['diff'].apply(check))

示例:

final_data = pd.DataFrame({'b': {0: pd.Timestamp('2016-01-13 00:00:00'), 
                                 1: pd.Timestamp('2016-01-05 00:00:00'), 
                                 2: pd.Timestamp('2016-01-03 00:00:00')}, 
                            'a': {0: pd.Timestamp('2016-01-01 00:00:00'), 
                                  1: pd.Timestamp('2016-01-02 00:00:00'), 
                                  2: pd.Timestamp('2016-01-03 00:00:00')}, 
                            'diff': {0: pd.Timedelta('12 days 00:00:00'), 
                                     1: pd.Timedelta('3 days 00:00:00'), 
                                     2: pd.Timedelta('0 days 00:00:00')}})
print (final_data)
           a          b    diff
0 2016-01-01 2016-01-13 12 days
1 2016-01-02 2016-01-05  3 days
2 2016-01-03 2016-01-03  0 days

print (final_data['diff'].apply(check))
0     TwoWeekDiff
1     OneWeekDiff
2    Current Week
Name: diff, dtype: object

关于python - 如何将以天为单位的 timedelta 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38691701/

相关文章:

java - 字节数组到字符串并反转 : recoverded byte array is NOT match to original byte array in Java

javascript - 是否有一个 JavaScript 函数可以填充字符串以达到确定的长度?

javascript - 为什么我不能在 reduce 回调的元素上使用 string.charCodeAt()

python - 在 OS X 上使用 Django 加载 MySQLdb 模块时出错

Python 套接字实现

python - 使用 VideoCapture 读取图像序列

python - 如果数据框中的另一列使用 pandas 匹配某个值,则从数据框中的列中减去值

Python 分组转置

Python Pandas,运行总和,基于前一行值并分组

python - ImageMagick: OSError:/lib/libc.so.6: 找不到版本 `GLIBC_2.XX'