Python 如何将dataframe列拆分为pandas中的另两列?
我试图将名为“variable”的列拆分为另外两列“Type”和“Parameter” 我尝试使用下面的代码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
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