将Pandas列拆分为多个列

xienkqul  于 2023-01-24  发布在  其他
关注(0)|答案(1)|浏览(143)

我在一个csv文件中有一些坐标,格式为[51.447084,-0.081564],我正在读入Pandas Dataframe 。
我想把它们分成两列。
我试过了

df[[f'Column {i}' for i in range(2)]] = df['event_location'].tolist()

但我的输出结果是:

event_location             Column 0           Column 1
0  [51.447084, -0.081564]  [51.447084, -0.081564]  [51.447084, -0.081564]
1    [51.447084, -0.081564]  [51.447084, -0.081564]  [51.447084, -0.081564]

这个也不行

df[['lat', 'long']] = df['event_location'].str.split(',', expand=True)

输出:

event_location        lat       long
0  [51.447084, -0.081564]  [51.447084, -0.081564]
1    [51.447084, -0.081564]  [51.447084, -0.081564]

然后我想在一个列表中查看它们,我认为这是我的问题,因为每对都是一个列表项。

['[51.447084, -0.081564]', '[51.447084, -0.081564]']

有什么想法吗?

nnsrf1az

nnsrf1az1#

您需要:

df[['lat', 'lon']] = (df['event_location'].str.strip('[]')
                      .str.split(',', expand=True).astype(float)
                     )

或者:

df[['lat', 'lon']] = (df['event_location'].str.extract('(-?\d+.?\d*),(-?\d+.?\d*)')
                      .astype(float)
                     )

输出:

event_location       lat      lon
0  [51.447084, -0.081564]  51.447084 -0.081564
1    [51.447084, -0.081564]  51.447084 -0.081564

相关问题