【问题标题】:Sorting rows in one dataframe into the columns of another dataframe将一个数据框中的行排序到另一个数据框的列中
【发布时间】:2020-03-23 01:10:54
【问题描述】:

我有以下数据框:

df1 = {'col1': {0: 'IL', 1: 'NE', 2: 'NE', 3: 'IL', 4: 'TX', 5: 'TX'},
 'col2': {0: 'bob', 1: 'fred', 2: 'alex', 3: 'ted', 4: 'frank', 5: 'tim'}}
df2 = {'IL': {0},'NE': {0},'TX': {0}}

dataframes and expected result

我想将 df1 中的 col 2 信息添加到 df2 中的正确列。到目前为止,我有以下代码:

for i in range(len(df1)):
      if df1.loc[i,'col1'] == #header of df2
             #add df1.loc[i,'col2'] to the header 'col1' matches with

我需要有关如何引用 df2 的标头然后将 col 2 代码添加到它匹配的特定标头的帮助。

【问题讨论】:

  • 请发布具有预期输出的示例数据。以此为指导:stackoverflow.com/questions/20109391/…
  • 很抱歉。我修复了我的图像
  • 请分享实际数据,而不是图片。你可以做 df.head().to_dict() 并粘贴输出
  • @sammywemmy 希望最新的编辑有所帮助。谢谢
  • 请提供minimal reproducible example,并说明问题到底是什么。

标签: python pandas dataframe


【解决方案1】:

试试:

df1.set_index(['col1', df1.groupby('col1').cumcount()])['col2'].unstack(0)

输出:

col1   IL    NE     TX
0     bob  fred  frank
1     ted  alex    tim

【讨论】:

    【解决方案2】:

    使用pivot table 将col2 聚合到一个列表中,并将pandas explode 应用于每一列:

      (df1.pivot_table(columns='col1',values='col2',aggfunc=list)
       .apply(lambda x: pd.Series.explode(x))
       .reset_index(drop=True)
       )
    
         col1   IL    NE      TX
           0    bob   fred   frank
           1    ted  alex    tim
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 2016-02-03
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 2020-08-04
      相关资源
      最近更新 更多