Python数据帧转置,其中某些行具有多个值

时间:2017-01-27 05:32:43

标签: python pandas

我是一个数据框:

field,value
a,1  
a,2  
b,8  

我想将其转换为此表格

a,b  
1,8  
2,8  

4 个答案:

答案 0 :(得分:2)

你可以这样做:

# df = pd.read_clipboard(sep=',')
df.pivot(columns=field, values=value).bfill().dropna()

答案 1 :(得分:2)

print (df)
   0  1
0  a  1
1  a  2
2  b  8

通过GroupBy.cumcount创建新索引组的解决方案,然后pivot并填写缺失值:

g = df.groupby(0).cumcount()
df1 = pd.pivot(index=g, columns=df[0], values=df[1]).ffill().astype(int)
        .rename_axis(None, axis=1)
print (df1)
   a  b
0  1  8
1  2  8

另一种解决方案会创建apply的群组,并按unstack重新整形:

print (df.groupby(0).apply(lambda x: pd.Series(x[1].values)).unstack(0).ffill().astype(int)
         .rename_axis(None, axis=1))
   a  b
0  1  8
1  2  8

答案 2 :(得分:2)

  • set_index,每个cumcount群组field + field
  • unstack + ffill
df.set_index(
    [df.groupby('field').cumcount(), 'field']
).value.unstack().ffill().astype(df.value.dtype)

field  a  b
0      1  8
1      2  8

答案 3 :(得分:0)

更简单的解决方案就是DataFrame.T(转置)

df_new = df.T