首页 > 解决方案 > 熊猫列到行的转换不起作用?

问题描述

我们有以下熊猫数据框

在此处输入图像描述

我们需要转换成下面的数据框

在此处输入图像描述

在使用 pd.wide_to_long 命令时,我们遇到以下错误:-

ValueError: stubname can't be identical to a column name

正在使用此命令:-

pd.wide_to_long(df,['Org','City'],i=['First Name','Middle Name','Last Name','Years'],j='drop').reset_index(level=[0,1]

标签: python-3.xpandas

解决方案


对我来说,您的解决方案有效,还添加了参数stubnames。可能是旧版 pandas 中的错误,链接,因此您可以尝试将 pandas 升级到最新版本:

df = pd.wide_to_long(df, stubnames=['Org','City'],
                     i=['First Name','Middle Name','Last Name','Years'],
                     j='drop').reset_index().drop('drop', 1)
print (df)
  First Name Middle Name Last Name  Years  Org City
0         aa          cc        dd   2019    v    n
1         aa          cc        dd   2019    m    m
2         aa          cc        dd   2019    d    n
3         aa          cc        dd   2019    p    j
4         zz          yy        xx   2018    p    n
5         zz          yy        xx   2018    q    n
6         zz          yy        xx   2018    i    d
7         zz          yy        xx   2018  NaN  NaN

编辑:如果可能的话,数据中的一些重复是可能的,通过创建默认索引reset_index并将列添加indexi变量:

print (df)
  First Name Middle Name Last Name  Years Org0 Org1 Org2 Org3 City0 City1  \
0         aa          cc        dd   2019    v    m    d    p     n     m   
1         zz          yy        xx   2018    p    q    i  NaN     n     n   

  City2 City3  
0     n     j  
1     d   NaN  

df = pd.wide_to_long(df.reset_index(), stubnames=['Org','City'],
                     i=['index','First Name','Middle Name','Last Name','Years'],
                     j='drop').reset_index().drop(['drop', 'index'], 1)
print (df)
  First Name Middle Name Last Name  Years  Org City
0         aa          cc        dd   2019    v    n
1         aa          cc        dd   2019    m    m
2         aa          cc        dd   2019    d    n
3         aa          cc        dd   2019    p    j
4         zz          yy        xx   2018    p    n
5         zz          yy        xx   2018    q    n
6         zz          yy        xx   2018    i    d
7         zz          yy        xx   2018  NaN  NaN

推荐阅读