【问题标题】:How to add attribute/tag column to dataframe?如何将属性/标签列添加到数据框?
【发布时间】:2017-06-15 20:21:58
【问题描述】:

我有以下数据框:

security   ticker   $amount
Apple      AAPL     5000
Coors      TAP      2000
Microsoft  MSFT     3000
US Dollar           10000
Alumina    AWC.AU   1000
Telstra    TLS.AU   1000
AU Dollar           2000

等等……

我怎样才能做到:

  • 对于“股票代码”中的每个空白行,(以更容易的为准),但最好将属性美元添加到上面列出的所有证券中,但如果有意义的话,在下一个之前添加属性...所以本质上,我会喜欢它为苹果、库尔斯、微软添加美元;并将 AU Dollar 添加到 Alumina、Telstra 等。我们可以将其列在一个额外的列中。
  • 如果更容易,我可以将美元、澳元和美元金额导出到不同的数据框中。
  • 完成此操作后,我想从数据框中删除“美元”、“澳元”及其各自的行。

理想情况下,如果我可以添加该属性,那将是巨大的。这样我就可以通过一个简单的查询来搜索总美元金额的美国证券。

有什么想法吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    不是最优雅的解决方案,但不妨试试看?

    首先我重新创建了您的 DataFrame:

    df = pd.DataFrame({'security': ['Apple', 'Coors', 'Microsoft', 'US Dollar', 'Alumina', 'Telstra', 'AU Dollar'],
                       'ticker': ['AAPL', 'TAP', 'MSFT', "", 'AWC.AU', 'TLS.AU', ""],
                       '$amount': [5000, 2000, 3000, 10000, 1000, 1000, 2000]})
    

    然后我用np.where从安全栏里提取了澳元和美元

    df['Extra Column'] = np.where(df['ticker'] == "", df['security'], np.nan)
    df['Extra Column'] = df['Extra Column'].fillna(method='bfill')
    df['Extra Amount'] = np.where(df['ticker'] == "", df['$amount'], np.nan)
    df['Extra Amount'] = df['Extra Amount'].fillna(method='bfill')
    result = df[df['ticker']!='']
    

    输出:

       $amount   security  ticker Extra Column  Extra Amount
    0     5000      Apple    AAPL    US Dollar       10000.0
    1     2000      Coors     TAP    US Dollar       10000.0
    2     3000  Microsoft    MSFT    US Dollar       10000.0
    4     1000    Alumina  AWC.AU    AU Dollar        2000.0
    5     1000    Telstra  TLS.AU    AU Dollar        2000.0
    

    【讨论】:

    • 那么,这仅适用于其中包含“美元”一词的字符串吗?如果我说,有日元呢。
    • hmmm .. 这似乎只创建新列.. 我无法在额外列中获取属性。原来的方式是可行的,但我们如何才能将其弯曲以基本上指定任何货币。
    • 为我工作。你是如何构建你的数据框的?确保空白值“”的字符串表示与 np.nan 一致
    • 知道了,所以基本上我只是先在空白单元格的地方添加了一个“X”,然后修改你的代码基本上说np.where(df['ticker'] == "X"。我认为存在某种奇怪的问题,它无法读取空白单元格(我之前曾遇到过)。不管怎样,你是最棒的。我真的不能感谢你。
    • 我的荣幸!尝试解决这些问题非常有趣。
    猜你喜欢
    • 2020-10-24
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2021-01-16
    相关资源
    最近更新 更多