如何在pandas中将dataframe列拆分为另两列?

2024-04-29 00:39:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将名为“variable”的列拆分为另两列“Type”和“Parameter”

  BatchNumber PhaseNumber SiteID   variable  Values
0  4552694035       0020B      2  min_tempC    27.0
1  4552694035     OverAll      2  max_tempF    24.0

我试着使用下面的代码

weatherData = weatherData['variable'].str.split('_', 1)

但没有达到预期的效果。 预期结果如下。你知道吗

  BatchNumber PhaseNumber SiteID   variable  Values     Type    Parameter
0  4552694035       0020B      2  min_tempC    27.0     min     tempC
1  4552694035     OverAll      2  max_tempF    24.0     max     tempF

任何人都知道。。如何得到它?你知道吗


Tags: 代码parametertypeminvariablemaxvaluesstr
3条回答

使用^{}表示带^{}的提取列,参数expand=True表示DataFrame

weatherData[['Type','Parameter']]=weatherData.pop('variable').str.split('_', 1, expand=True)
print (weatherData)
   BatchNumber PhaseNumber  SiteID  Values Type Parameter
0   4552694035       0020B       2    27.0  min     tempC
1   4552694035     OverAll       2    24.0  max     tempF

如果还要删除原始列pop

weatherData[['Type','Parameter']] = weatherData['variable'].str.split('_', 1, expand=True)
print (weatherData)
   BatchNumber PhaseNumber  SiteID   variable  Values Type Parameter
0   4552694035       0020B       2  min_tempC    27.0  min     tempC
1   4552694035     OverAll       2  max_tempF    24.0  max     tempF

这可以通过^{}实现:

df['Type'], df['Parameter'] = df['variable'].str.split('_')

#    BatchNumber PhaseNumber  SiteID   variable  Values   Type Parameter
# 0   4552694035       0020B       2  min_tempC    27.0    min       max
# 1   4552694035     OverAll       2  max_tempF    24.0  tempC     tempF

使用assignzipdict解包

df.assign(**dict(zip(('Type', 'Parameter'), zip(*df.variable.str.split('_')))))

   BatchNumber PhaseNumber  SiteID   variable  Values Type Parameter
0   4552694035       0020B       2  min_tempC    27.0  min     tempC
1   4552694035     OverAll       2  max_tempF    24.0  max     tempF

相关问题 更多 >