Python Pandas DataFrame-创建动态列数

Python Pandas DataFrame-创建动态列数,python,database,pandas,numpy,dataframe,Python,Database,Pandas,Numpy,Dataframe,数据: qid qualid val 0 1845631864 227 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 1 1899053658 44 1,3,3,2,2,2,3,3,4,4,4,5,5,5,5,5,5,5 2 1192887045 197 704 3 1833579269 194 139472 4 1497352469 30 120026,170154,152723,90407,

数据:

    qid     qualid  val
0   1845631864  227     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1   1899053658  44  1,3,3,2,2,2,3,3,4,4,4,5,5,5,5,5,5,5
2   1192887045  197     704
3   1833579269  194     139472
4   1497352469  30  120026,170154,152723,90407,63119,80077,178871,...
    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5
2   1192887045  197    704
3   1833579269  194   139472
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313
    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5      NaN    NaN   NaN
2   1192887045  197    704   NaN  NaN   ...... NaN     NaN    NaN   NaN
3   1833579269  194   139472 NaN  NaN   ...... NaN     NaN    NaN   
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313
问题:

    qid     qualid  val
0   1845631864  227     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1   1899053658  44  1,3,3,2,2,2,3,3,4,4,4,5,5,5,5,5,5,5
2   1192887045  197     704
3   1833579269  194     139472
4   1497352469  30  120026,170154,152723,90407,63119,80077,178871,...
    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5
2   1192887045  197    704
3   1833579269  194   139472
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313
    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5      NaN    NaN   NaN
2   1192887045  197    704   NaN  NaN   ...... NaN     NaN    NaN   NaN
3   1833579269  194   139472 NaN  NaN   ...... NaN     NaN    NaN   
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313
在列val中用逗号分隔的数字需要在每行的不同列中表示

我不知道Pandas是否允许,但理想情况下,我们希望为每行创建准确的n列数,其中nval列中的元素数

如果这是不可能的,那么val中的最大元素数应该是元素少于由NAN组成的列数和行数

上述问题的示例解决方案1:

    qid     qualid  val
0   1845631864  227     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1   1899053658  44  1,3,3,2,2,2,3,3,4,4,4,5,5,5,5,5,5,5
2   1192887045  197     704
3   1833579269  194     139472
4   1497352469  30  120026,170154,152723,90407,63119,80077,178871,...
    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5
2   1192887045  197    704
3   1833579269  194   139472
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313
    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5      NaN    NaN   NaN
2   1192887045  197    704   NaN  NaN   ...... NaN     NaN    NaN   NaN
3   1833579269  194   139472 NaN  NaN   ...... NaN     NaN    NaN   
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313
上述问题的备选解决方案2:

    qid     qualid  val
0   1845631864  227     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1   1899053658  44  1,3,3,2,2,2,3,3,4,4,4,5,5,5,5,5,5,5
2   1192887045  197     704
3   1833579269  194     139472
4   1497352469  30  120026,170154,152723,90407,63119,80077,178871,...
    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5
2   1192887045  197    704
3   1833579269  194   139472
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313
    qid       qualid  val1  val2  val3        valn-3 valn-2 valn-1 valn
0   1845631864  227     0     0    0    ......  0        0      0    0
1   1899053658  44      1     3    3    ......  5      NaN    NaN   NaN
2   1192887045  197    704   NaN  NaN   ...... NaN     NaN    NaN   NaN
3   1833579269  194   139472 NaN  NaN   ...... NaN     NaN    NaN   
4   1497352469  30    120026 170154 152723.....63119  80077 178871 12313

您可以检查
str.split

pd.concat([df,df.val.str.split(',',expand=True).add_prefix('Val_')],axis=1)
Out[29]: 
          qid  qualid  ...   Val_16 Val_17
0  1845631864     227  ...        0      0
1  1899053658      44  ...        5      5
2  1192887045     197  ...     None   None
3  1833579269     194  ...     None   None
4  1497352469      30  ...     None   None

您可以检查
str.split

pd.concat([df,df.val.str.split(',',expand=True).add_prefix('Val_')],axis=1)
Out[29]: 
          qid  qualid  ...   Val_16 Val_17
0  1845631864     227  ...        0      0
1  1899053658      44  ...        5      5
2  1192887045     197  ...     None   None
3  1833579269     194  ...     None   None
4  1497352469      30  ...     None   None

谢谢。干杯,非常感谢。干杯