【问题标题】:python pandas quantlib.time.date.Datepython pandas quantlib.time.date.Date
【发布时间】:2018-03-09 18:17:47
【问题描述】:

我有两个数据框:

import pandas as pd
from quantlib.time.date import Date
cols = ['ColStr','ColDate']
dataset1 = [['A',Date(2017,1,1)],['B',Date(2017,2,2)]]
x = pd.DataFrame(dataset1,columns=cols)
dataset2 = [['A','2017-01-01'],['B','2017-02-04']]
y = pd.DataFrame(dataset2,columns=cols)

现在,我想比较这两个表。我编写了另一组代码来比较两个(较大的)数据帧并适用于字符串和数值。

我的问题是 - 列 'ColDate' 一个是字符串类型,另一个是日期类型,我无法验证 'ColStr' = A 是否匹配,而 'ColStr' = 'B' 是否不匹配。

我必须 (1) 要么将 y.ColDate 转换为 Date (2) 或者将x.ColDate转成str,格式与y.ColDate类似。

我如何实现其中一个或另一个

【问题讨论】:

  • 换句话说,我想将'ColDate'设为相同的数据类型。

标签: python pandas quantlib


【解决方案1】:

我猜您需要使用 dataset1['ColDate'] = dataset1.ColDate.map(convert_type) 之类的东西或任何其他方法来迭代列值,将它们转换为单个常见类型。检查pandas docs 的其他功能,例如apply()

convert_type 函数应在您的程序中定义,并接受一个要传递给 map() 的参数。

而且,当列具有相同的类型时,您可以使用任何您喜欢的方法来比较它们。

【讨论】:

  • x['ColDate'] = x.ColDate.map(convert_type)....你的意思是这个。我认为这似乎有效。我正在两个大型数据帧之间进行比较,但是我的测试通过这种方法通过了。谢谢
【解决方案2】:

您可能想使用dt.strftime() 函数。

dataset1[0].dt.strftime("%Y-%m-%d")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2015-10-12
    • 2021-01-15
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多