【问题标题】:Pandas: Replace a column within a data frame by two columnsPandas:将数据框中的一列替换为两列
【发布时间】:2018-01-09 12:35:12
【问题描述】:

我的 csv 文件中有一个列,其中包含一个元组作为值。 例如。一个值:10.000 , 20.000

我的目标是用两个新列拆分和替换该列。

我已经尝试了以下方法:

brokerMktPrices["nameOfColumn"] = pd.DataFrame(brokerMktPrices["nameOfColumn"].str.split(' ',1).tolist(), columns = ['firstNewColumn','secondNewColumn'])

但这会导致一列仅包含元组的第一个值(左侧值)。所以secondNewColumn 不见了!

我还尝试了一些麻烦的东西,比如在我的数据框末尾添加两个新列,然后删除 nameOfColumncolumn !但我认为必须有更好的解决方案来解决我的问题!

【问题讨论】:

    标签: python pandas multiple-columns


    【解决方案1】:

    如果值是元组,我认为你需要:

    brokerMktPrices = pd.DataFrame({'nameOfColumn':[(10.000 , 20.000),(10.000 , 20.000)]})
    print (brokerMktPrices)
       nameOfColumn
    0  (10.0, 20.0)
    1  (10.0, 20.0)
    
    df = pd.DataFrame(brokerMktPrices["nameOfColumn"].values.tolist())
    print (df)
          0     1
    0  10.0  20.0
    1  10.0  20.0
    

    如果值是字符串:

    brokerMktPrices = pd.DataFrame({'nameOfColumn':['10.000 , 20.00','10.000 , 20.000']})
    
    df = brokerMktPrices["nameOfColumn"].str.split('\s+,\s+', expand=True)
    print (df)
            0       1
    0  10.000   20.00
    1  10.000  20.000
    

    最后分配给新列:

    brokerMktPrices[["c", "b"]] = df
    print (brokerMktPrices)
          nameOfColumn       c       b
    0   10.000 , 20.00  10.000   20.00
    1  10.000 , 20.000  10.000  20.000
    

    【讨论】:

    • 第二种方法效果很好 :) 谢谢!以及如何在“nameOfColumn”列之后添加新列?这个例子只是一个小 sn-p !就我而言,在“NameOfColumn”之后发生了多个其他列
    • 我认为有可能重新索引列或使用insert,如brokerMktPrices.insert(1, 'b', df[0]) brokerMktPrices.insert(2, 'c', df[1])
    猜你喜欢
    • 2018-09-29
    • 2016-05-03
    • 2018-11-12
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2019-03-23
    • 2018-03-25
    相关资源
    最近更新 更多