【问题标题】:Python Pandas - convert unicode data into dataframe so I can appendPython Pandas - 将 unicode 数据转换为数据框,以便我可以追加
【发布时间】:2018-08-13 18:24:14
【问题描述】:

我正在使用 pytreasurydirect 提取数据,我想查询每个唯一的 cusip,然后附加它们并创建一个 pandas 数据框表。我在生成熊猫数据框时遇到了困难。我相信这是因为数据的 unicode 结构。

import pandas as pd
from pytreasurydirect import TreasuryDirect
td = TreasuryDirect()

cusip_list = [['912796PY9','08/09/2018'],['912796PY9','06/07/2018']]

for i in cusip_list:
    cusip =''.join(i[0]) 
    issuedate =''.join(i[1])
    cusip_value=(td.security_info(cusip, issuedate))
    #pd.DataFrame(cusip_value.items())
    df = pd.DataFrame(cusip_value, index=['a']) 
    td = td.append(df, ignore_index=False)

来自 pytreasurydirect 的数据示例:

Index([u'accruedInterestPer100', u'accruedInterestPer1000',
       u'adjustedAccruedInterestPer1000', u'adjustedPrice',
       u'allocationPercentage', u'allocationPercentageDecimals',
       u'announcedCusip', u'announcementDate', u'auctionDate',
       u'auctionDateYear',
       ...
       u'totalTendered', u'treasuryDirectAccepted',
       u'treasuryDirectTendersAccepted', u'type',
       u'unadjustedAccruedInterestPer1000', u'unadjustedPrice',
       u'updatedTimestamp', u'xmlFilenameAnnouncement',
       u'xmlFilenameCompetitiveResults', u'xmlFilenameSpecialAnnouncement'],
      dtype='object', length=116)

【问题讨论】:

  • 你能展示一下 cusip_value 的样子吗?迭代对 pandas 没有好处。
  • cusip 值为 = 912796PY9。此值存在于两个不同的国库券发行 08/09/2018 和 06/07/2018
  • 这段代码在做什么?td.security_info(cusip, issuedate))
  • 此代码正在组合一个数据集,其中包含按个人债券计算的所有美国国债。 cusip/发行日期是唯一的债务键。

标签: python pandas dataframe unicode


【解决方案1】:

我想你想定义一个这样的函数:

def securities(type):
    secs = td.security_type(type)
    keys = secs[0].keys() if secs else []
    seri = [pd.Series([sec[key] for sec in secs]) for key in keys]
    return pd.DataFrame(dict(zip(keys, seri)))

然后,使用它:

df = securities('Bond')
df[['cusip', 'issueDate', 'maturityDate']].head()

例如要获得这样的结果(TreasuryDirect 返回很多附加列):

       cusip            issueDate         maturityDate
0  912810SD1  2018-08-15T00:00:00  2048-08-15T00:00:00
1  912810SC3  2018-07-16T00:00:00  2048-05-15T00:00:00
2  912810SC3  2018-06-15T00:00:00  2048-05-15T00:00:00
3  912810SC3  2018-05-15T00:00:00  2048-05-15T00:00:00
4  912810SA7  2018-04-16T00:00:00  2048-02-15T00:00:00

至少今天这些是今天的结果。随着债券的发行和成熟,结果会随着时间而改变。请注意每个cusip 的多个issueDates

最后,根据 TreasuryDirect 网站 (https://www.treasurydirect.gov/webapis/webapisecurities.htm),可能的安全类型有:BillNoteBondCMBTIPSFRN

【讨论】:

    猜你喜欢
    • 2018-05-14
    • 1970-01-01
    • 2014-08-19
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多