Pandas:通过两列数据替换数据框中的一列。

6

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

我的目标是将该列拆分并替换为两个新列。

我已经尝试了以下方法:

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

但这会导致一个列只包含元组的第一个值(左边的值)。因此,secondNewColumn丢失了!

我还尝试过一些繁琐的方法,比如在数据框的末尾添加两个新列,然后删除nameOfColumn列!但我认为有更好的解决方案来解决我的问题!

1个回答

2

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

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”列后添加新的列呢?这个例子只是一个小片段!在我的情况下,“NameOfColumn”之后有多列。 - Jannik
我认为可以重新索引列或使用 insert,例如 brokerMktPrices.insert(1, 'b', df[0]) brokerMktPrices.insert(2, 'c', df[1]) - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接