Python 在dataframe中将列拆分为多个具有特定名称的列

Python 在dataframe中将列拆分为多个具有特定名称的列,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: pri sec TOM AB,CD,EF JACK XY,YZ HARRY FG NICK KY,NY,SD,EF,FR 我需要以下列名的输出,如下所示(基于“sec”列中存在多少分隔字段): 我能得到一些建议吗?使用++: 如果需要,请添加: 尝试以下代码(解释为注释)。它在“秒”列中查找项目的最大长度,并相应地创建名称: maxlen = max(list(map(lambda x: len(x.split(",")) ,df.sec))) # fi

我有以下数据帧:

pri    sec
TOM    AB,CD,EF
JACK   XY,YZ
HARRY  FG
NICK   KY,NY,SD,EF,FR
我需要以下列名的输出,如下所示(基于“sec”列中存在多少分隔字段):

我能得到一些建议吗?

使用++:

如果需要,请添加:

尝试以下代码(解释为注释)。它在“秒”列中查找项目的最大长度,并相应地创建名称:

maxlen = max(list(map(lambda x: len(x.split(",")) ,df.sec))) # find max length in 'sec' column
cols = ["sec"+str(x)   for x in range(maxlen)]      # create new column names 
datalist = list(map(lambda x: x.split(","), df.sec)) # create list from entries in "sec" 
newdf = pd.DataFrame(data=datalist, columns=cols)   # create dataframe of new columns
newdf = pd.concat([df, newdf], axis=1)              # add it to original dataframe
print(newdf)
输出:

     pri             sec sec0  sec1  sec2  sec3  sec4
0    TOM        AB,CD,EF   AB    CD    EF  None  None
1   JACK           XY,YZ   XY    YZ  None  None  None
2  HARRY              FG   FG  None  None  None  None
3   NICK  KY,NY,SD,EF,FR   KY    NY    SD    EF    FR

df.join(df['sec'].str.split(',',expand=True)。添加前缀('sec'))
以添加前缀。@Zero-谢谢。您好,我有一个类似的问题,但是我的panda数组的形式为:[1,3,5,…..2]。每个单元格中有50个值。我尝试使用.str.split(“,”,expand=True),但它似乎不起作用work@Kiann-那么什么是打印(df['column'].apply(type))?有列表或字符串吗?嗨@jezrael,它显示为类列表。
df = df.join(df['sec'].str.split(',', expand=True).add_prefix('sec').fillna(np.nan))
print (df)
     pri             sec sec0 sec1 sec2 sec3 sec4
0    TOM        AB,CD,EF   AB   CD   EF  NaN  NaN
1   JACK           XY,YZ   XY   YZ  NaN  NaN  NaN
2  HARRY              FG   FG  NaN  NaN  NaN  NaN
3   NICK  KY,NY,SD,EF,FR   KY   NY   SD   EF   FR
maxlen = max(list(map(lambda x: len(x.split(",")) ,df.sec))) # find max length in 'sec' column
cols = ["sec"+str(x)   for x in range(maxlen)]      # create new column names 
datalist = list(map(lambda x: x.split(","), df.sec)) # create list from entries in "sec" 
newdf = pd.DataFrame(data=datalist, columns=cols)   # create dataframe of new columns
newdf = pd.concat([df, newdf], axis=1)              # add it to original dataframe
print(newdf)
     pri             sec sec0  sec1  sec2  sec3  sec4
0    TOM        AB,CD,EF   AB    CD    EF  None  None
1   JACK           XY,YZ   XY    YZ  None  None  None
2  HARRY              FG   FG  None  None  None  None
3   NICK  KY,NY,SD,EF,FR   KY    NY    SD    EF    FR