当前位置: 首页 > 知识库问答 >
问题:

为熊猫数据框中的唯一行分配列值[重复]

有耀
2023-03-14

我有以下数据框:

AA          AB          AC                  AD              Col_1       Col_2     Col_3    
Northeast   Argentina   Northeast Argentina South America   Corrientes  Misiones        
Northern    Argentina   Northern  Argentina South America   Chaco       Formosa   Santiago Del 

我想将其转换为:

AA          AB          AC                  AD              Col
Northeast   Argentina   Northeast Argentina South America   Corrientes
Northeast   Argentina   Northeast Argentina South America   Misiones        
Northern    Argentina   Northern  Argentina South America   Chaco
Northern    Argentina   Northern  Argentina South America   Formosa
Northern    Argentina   Northern  Argentina South America   Santiago Del 

i、 e.我希望保留前4列,但将剩余的每列值分配到单独的行中。有没有一种不使用for循环的方法来实现这一点?

共有2个答案

郭意
2023-03-14

尝试使用:

df['Col'] = df[['Col_1', 'Col_2', 'Col_3']].values.tolist()
df = df.set_index(df.columns.drop('Col').tolist())['Col'].apply(pd.Series).stack().reset_index().rename(columns={0: 'Col'}).drop(['level_7', 'Col_1', 'Col_2', 'Col_3'], axis=1)
print(df)

输出:

          AA         AB                   AC             AD           Col
0  Northeast  Argentina  Northeast Argentina  South America    Corrientes
1  Northeast  Argentina  Northeast Argentina  South America      Misiones
2   Northern  Argentina   Northern Argentina  South America         Chaco
3   Northern  Argentina   Northern Argentina  South America       Formosa
4   Northern  Argentina   Northern Argentina  South America  Santiago Del
端木存
2023-03-14

您可以尝试以下方法:

df = df.melt(id_vars=['AA','AB','AC','AD']) 
df.dropna(inplace=True)
df.drop(columns='variable', inplace=True) 
df = df.sort_values('AA').reset_index(drop=True)
df.rename(columns={'value':'Col'}, inplace=True)

          AA         AB                   AC             AD           Col
0  Northeast  Argentina  Northeast Argentina  South America    Corrientes
1  Northeast  Argentina  Northeast Argentina  South America      Misiones
2   Northern  Argentina   Northern Argentina  South America         Chaco
3   Northern  Argentina   Northern Argentina  South America       Formosa
4   Northern  Argentina   Northern Argentina  South America  Santiago Del

 类似资料:
  • 我有一个数据框架,其中有一列用于分组和问题答案列: 我想将问题的列移到行中,这样所需的数据框将如下所示: ...依此类推,直到最后一行: 最好的方法是什么?

  • 问题内容: 我将数据存储在pandas数据框中,如下所示: 所以,我的数据看起来像这样 我想将其转换为另一个数据框。预期的输出可以在以下python脚本中显示: 因此,我的预期输出如下所示 实际上,我可以使用以下命令来找到所有组合并对其进行计数: 但是,事实证明,此类组合在单个列中。我想将组合中的每个值分隔到不同的列中,并且还要为计数结果增加一列。有可能这样做吗?请问您有什么建议吗?先感谢您。 问

  • 我想使用两列作为行ID,同时计算基于时间的分组。请看下图: 转化成这样: 正在发生的是,X在时间10发生了0次,但在15和23发生了1次。 Y在10点钟发生了3次,但在15和23没有。等等。

  • 问题内容: 我想在Pandas Dataframe中复制行。每行应重复n次,其中n是每行的一个字段。 这可能吗? 问题答案: 您可以用来获取重复的索引,然后使用它来索引框架: 之后,只需清理一下即可: 请注意,如果您可能有重复的索引值得担心,则可以改用: 使用位置,而不使用索引标签。

  • 问题内容: 我遇到了一个看似简单的问题:在熊猫数据框中删除唯一的行。基本上与的相反。 假设这是我的数据: 当A和B唯一时,我想删除行,即我只保留行1和2。 我尝试了以下方法: 但是我只能得到第2行,因为唯一性是0、1和3! 问题答案: 选择所有重复行的解决方案: 您可以使用子集和参数来选择所有重复项: 解决方案: 对所有唯一行进行了一些修改的解决方案:

  • 问题内容: 我有一个看起来像这样的熊猫数据框。 我想确定cat和bat是重复的相同值,因此想删除一个记录并仅保留第一条记录。结果数据帧应该只有一个。 问题答案: 使用具有与列的列表上检查重复和保持第一重复的。 如果是: 结果: 然后: 结果: