当前位置: 首页 > 面试题库 >

pandas按名称将几组列融为多个目标列

邹祺然
2023-03-14
问题内容

我想将数据框的几组列融合为多个目标列。与问题类似,Python
Pandas将初始列的组融为多个目标列,并将pandas数据框重塑/将多个值变量堆叠为单独的列。但是,我需要通过列名而不是索引位置来明确地执行此操作。

import pandas as pd
df = pd.DataFrame([('a','b','c',1,2,3,'aa','bb','cc'), ('d', 'e', 'f', 4, 5, 6, 'dd', 'ee', 'ff')],
                  columns=['a_1', 'a_2', 'a_3','b_1', 'b_2', 'b_3','c_1', 'c_2', 'c_3'])
df

原始数据框:

    id   a_1  a_2  a_3  b_1  b_2  b_3  c_1  c_2  c_3
0   101   a    b    c    1    2    3    aa   bb   cc
1   102   d    e    f    4    5    6    dd   ee   ff

目标数据

     id   a   b   c
0   101   a   1   aa
1   101   b   2   bb
2   101   c   3   cc
3   102   d   4   dd
4   102   e   5   ee
5   102   f   6   ff

对此方法的建议深表感谢。


问题答案:

有一种更有效的方法来解决涉及熔化多组不同色谱柱的这类问题。pd.wide_to_long专为这些确切情况而设计。

pd.wide_to_long(df, stubnames=['a', 'b', 'c'], i='id', j='dropme', sep='_')\
  .reset_index()\
  .drop('dropme', axis=1)\
  .sort_values('id')

    id  a  b   c
0  101  a  1  aa
2  101  b  2  bb
4  101  c  3  cc
1  102  d  4  dd
3  102  e  5  ee
5  102  f  6  ff


 类似资料:
  • 问题内容: 我正在尝试通过两种不同的方法在Pandas数据框中选择多个列: 1)通过列号,例如1-3列和6列起。 和 2)通过列名列表,例如: 然后, years_month 将产生以下内容: 也就是说,在两种方法中,仅加载名称在 Years_month 列表中的列的最佳(或正确)方法是什么? 问题答案: 我认为您需要合并列的位置,然后用于选择: 对于第二种方法子集,通过: 样品: 您也可以总结的

  • 问题内容: 这是我的df: 如何将按名称()的列移动到表的前面,索引为0。结果应如下所示: 我当前的代码使用来按索引移动列,但我想按名称进行移动。 问题答案: 我们可以通过传递列表来重新排序: 另一种方法是引用该列,然后将其重新插入前面: 从以后开始,您还可以使用以获得与以后版本的熊猫不建议使用的相同的结果:

  • 我一直在寻找通过python文档和论坛来选择列的方法,但是关于列索引的每个示例都过于简单。 假设我有一个10x10的数据帧 到目前为止,给出的所有文档只是一个简单的索引示例,如

  • 在Loc vs. iloc vs. ix vs. at vs. iat的答案中选择?例如。 现在我想要所有的栏目,除了“食物”和“高度”。 我认为类似于的东西可以工作,但是Python返回。 我知道有一种解决方法:。然而,在我的现实生活中,我有数百列要删除。键入所有列名是如此低效。 我期待类似于R语言中的或。 还阅读了选择/排除Pandas中的列集。

  • 我正在开发一个应该删除命名列的小PowerShell脚本。有没有办法不选择标题为“xyz”的列? 我试图通过 并将结果连接到逗号分隔的字符串中并删除不需要的标头 然后使用

  • 问题内容: 我有一个带有列名称的数据集“城市” 我使用以下代码,并将列名命名为 在pandas._period.Period数据类型中。 我希望列为 我希望在输出列名称中使用小写字母“ q”。 谢谢。 问题答案: 您需要使用什么: 样品: