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

Python 如何将dataframe列拆分为pandas中的另两列?,python,pandas,dataframe,Python,Pandas,Dataframe,我试图将名为“variable”的列拆分为另外两列“Type”和“Parameter” 我尝试使用下面的代码 weatherData = weatherData['variable'].str.split('_', 1) 但是没有得到预期的结果。 预期结果如下 BatchNumber PhaseNumber SiteID variable Values Type Parameter 0 4552694035 0020B 2 min_tempC

我试图将名为“variable”的列拆分为另外两列“Type”和“Parameter”

我尝试使用下面的代码

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
任何人都知道。。如何获取它?

使用参数
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
这可以通过以下方式实现:


使用
assign
zip
dict
解包

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

感谢它与您的解决方案一起工作看起来OP不希望该列弹出
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
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