【问题标题】:append column values to row pandas将列值附加到行 pandas
【发布时间】:2021-08-08 20:18:06
【问题描述】:
df = pd.DataFrame()
df['col1'] = ('y','y','y')
df['col2'] = ('a','b','c')
df['col3'] = ('x','x','x')
print df

我有这个 df 并试图将 b、c 复制或移动到第一行的新列。 我试过pivot_tablepd.groupbyfor index, row in top.iterrows():

df 中可能并不总是三行。因此,如果没有任何行,则不要执行任何操作。

这是我最后一次尝试。我不记得我用.groupbypivot_table 尝试了什么

for index, row in df.iterrows():
    df1['col2'+row] = df1['col2'][row]
    top_comb = top_comb.append(top)

Col1 | Col2 | Col3 | Col21 | Col22 
 y   |   a  |  x   |  b    |   c  

【问题讨论】:

    标签: python pandas dataframe group-by


    【解决方案1】:

    如果您希望输出为单行,您可以执行以下操作:

    if len(df) > 1:
        new_df = df.col2.loc[1:].to_frame().T.reset_index(drop=True)
        new_df.columns = [f'col2{i+1}' for i in range(len(new_df.columns))]
        pd.concat([df.loc[0, :].to_frame().T, new_df], axis=1)
    
    
      col1 col2 col3 col21 col22
    0    y    a    x     b     c
    

    【讨论】:

      【解决方案2】:

      尝试:

      df1 = df.groupby(['col1', 'col3'], as_index=False).agg(list)
      df = pd.concat([df1, df1.pop('col2').apply(pd.Series).add_prefix('col2')], 1)
      

      【讨论】:

      • 这很好用。我不得不稍微调整它以适应我的其余代码,但这是一个巨大的帮助。谢谢
      • 没问题。 @rakurakur
      猜你喜欢
      • 2018-11-08
      • 2014-05-19
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多