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

pandas融化功能

吴高畅
2023-03-14
问题内容

我有一个数据框:

df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014]], columns=['Amy', 'Bob', 'Carl', 'Chris', 'Ben', 'Other', 'Year'])



   Amy  Bob  Carl  Chris  Ben  Other  Year
0    2    4     7      8    1      3  2013
1    9    2     4      5    5      6  2014

和字典:

d = {'A': ['Amy'], 'B': ['Bob', 'Ben'], 'C': ['Carl', 'Chris']}

我想重塑我的数据框,使其看起来像这样:

    Group   Name  Year  Value
 0      A    Amy  2013      2
 1      A    Amy  2014      9
 2      B    Bob  2013      4
 3      B    Bob  2014      2
 4      B    Ben  2013      1
 5      B    Ben  2014      5
 6      C   Carl  2013      7
 7      C   Carl  2014      4
 8      C  Chris  2013      8
 9      C  Chris  2014      5
10  Other         2013      3
11  Other         2014      6

请注意,列Other中没有任何值,Name行的顺序无关紧要。我认为我应该使用该melt函数,但我遇到的示例不太清楚。


问题答案:

melt 带您到那里。

In [29]: m = pd.melt(df, id_vars=['Year'], var_name='Name')

除了一切都有Group。为了做到这一点,我们还需要重塑d一点。

In [30]: d2 = {}

In [31]: for k, v in d.items():
    for item in v:
        d2[item] = k
   ....:

In [32]: d2
Out[32]: {'Amy': 'A', 'Ben': 'B', 'Bob': 'B', 'Carl': 'C', 'Chris': 'C'}

In [34]: m['Group'] = m['Name'].map(d2)

In [35]: m
Out[35]:
    Year   Name  value Group
0   2013    Amy      2     A
1   2014    Amy      9     A
2   2013    Bob      4     B
3   2014    Bob      2     B
4   2013   Carl      7     C
..   ...    ...    ...   ...
7   2014  Chris      5     C
8   2013    Ben      1     B
9   2014    Ben      5     B
10  2013  Other      3   NaN
11  2014  Other      6   NaN

[12 rows x 4 columns]

并将“其他”从Name转移到Group

In [8]: mask = m['Name'] == 'Other'

In [9]: m.loc[mask, 'Name'] = ''

In [10]: m.loc[mask, 'Group'] = 'Other'

In [11]: m
Out[11]:
    Year   Name  value  Group
0   2013    Amy      2      A
1   2014    Amy      9      A
2   2013    Bob      4      B
3   2014    Bob      2      B
4   2013   Carl      7      C
..   ...    ...    ...    ...
7   2014  Chris      5      C
8   2013    Ben      1      B
9   2014    Ben      5      B
10  2013             3  Other
11  2014             6  Other

[12 rows x 4 columns]


 类似资料:
  • 问题内容: 我无法弄清楚如何使用python中的Pandas进行“反向融化”。这是我的起始数据 这是我想要的输出: 我敢肯定有一个简单的方法可以做到这一点,但是我不知道怎么做。 问题答案: 有几种方法; 使用: 使用: 或后跟:

  • 问题内容: 给定以下形式的方形熊猫DataFrame: 如何能在上三角熔化得到以下形式的矩阵 我对惯用的熊猫解决方案更感兴趣,自定义索引器将很容易手动编写… 预先感谢您的考虑和回应。 问题答案: 首先,我将的较低值转换为by和and ,然后设置列名称:

  • 4.1. 四个置顶的警告! 从 0.25 起,pandas 只支持 Python 3.53 及以上版本了,不再支持 Python 2.7,还在使用 Python 2 的朋友可要注意了,享受不了新功能了,不过,貌似用 Python 2 做数据分析这事儿估计已经绝迹了吧! 下一版 pandas 将只支持 Python 3.6 及以上版本了,这是因为 f-strings 的缘故吗?嘿嘿。 彻底去掉了 P

  • 问题内容: 在熊猫中,我具有以下数据框: 我想一次融化两列。也就是说,所需的输出是: 我知道标准融化: 但这会堆叠所有列 我如何一次融化两列?就像是: 会很好。 问题答案: 这是

  • 我正在写学士论文。 我的主题是强化学习。设置: Unity3D (C#) 自己的神经网络框架 通过测试来训练正弦函数,确认网络工作正常。它可以近似。好有些价值观达不到他们的期望值,但这已经足够好了。当用单个值训练它时,它总是收敛的。 这是我的问题: 我试着教我的网络一个简单游戏的Q值函数,接球:在这个游戏中,它只需要接住一个从随机位置和随机角度落下的球。1如果接住-1如果失败 我的网络模型有 1

  • 在PySpark中或者至少在Scala中,Apache Spark中是否有与Pandas Melt函数等价的函数? 到目前为止,我一直在用Python运行一个示例数据集,现在我想对整个数据集使用Spark。

  • 问题内容: 显示大pandas数据框时是否可以隐藏索引,以便仅列名出现在表格的顶部? 这将需要同时适用于ipython笔记本中的html表示形式和to_latex()函数(我正在与nbconvert一起使用)。 助教。 问题答案: 组 对于ipython笔记本: 对于to_latex:

  • 问题内容: 我想将数据框的几组列融合为多个目标列。与问题类似,Python Pandas将初始列的组融为多个目标列,并将pandas数据框重塑/将多个值变量堆叠为单独的列。但是,我需要通过列名而不是索引位置来明确地执行此操作。 原始数据框: 目标数据框 对此方法的建议深表感谢。 问题答案: 有一种更有效的方法来解决涉及熔化多组不同色谱柱的这类问题。专为这些确切情况而设计。