Pandas:用两列替换数据框中的一列

Gus*_*sto 6 python multiple-columns pandas

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

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

我已经尝试过以下操作:

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

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

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

jez*_*ael 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
Run Code Online (Sandbox Code Playgroud)

如果值是字符串:

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
Run Code Online (Sandbox Code Playgroud)

最后分配给新列:

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
Run Code Online (Sandbox Code Playgroud)