在pandas标签上,我经常看到用户询问有关在 pandas 中融合数据框的问题。我将尝试针对此主题进行规范的问答(自我回答)。
我要澄清:
什么是熔体?
我如何使用熔体?
我什么时候使用熔体?
我看到一些关于融化的热门问题,例如:
pandas 将一些列转换为行:这实际上可能很好,但更多的解释会更好。
Pandas Melt Function : Nice question answer是好的,但是有点太含糊了,没有太多的展开。
融化熊猫数据框:也是一个不错的答案!但这仅适用于特定情况,这很简单,仅pd.melt(df)
Pandas 数据框使用列作为行(融化):非常整洁!但问题是它仅适用于 OP 提出的特定问题,这也需要使用pivot_table。
所以我将尝试针对这个主题进行规范的问答。
我将在这个随机成绩数据集上为随机年龄的随机人提供我所有的答案(更容易解释答案:D):
import pandas as pd
df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'],
'Math': ['A+', 'B', 'A', 'F', 'D', 'C'],
'English': ['C', 'B', 'B', 'A+', 'F', 'A'],
'Age': [13, 16, 16, 15, 15, 13]})
>>> df
Name Math English Age
0 Bob A+ C 13
1 John …Run Code Online (Sandbox Code Playgroud) 我读了一个 csv,它有多个列。我想转置
Date A B C
25/5/2019 25 765.3 896
26/5/2019 98 769
27/5/2019 27.6 453.2 98.6
Run Code Online (Sandbox Code Playgroud)
我努力了
df2 = pd.melt(df, id_vars=['DateTime'],value_vars=['A','B','C'],
var_name='detail',value_name='')
df2 = df2.sort_values(['DateTime'])
Run Code Online (Sandbox Code Playgroud)
它将列更改为行,但我遇到两个问题。
它还添加了列名称以及我不想要的值。我只需要价值观
列没有顺序。我想按顺序转置 col 。
电流输出为
Date final values
25/5/2019 A 25
25/5/2019 C 896
25/5/2019 B 765.3
26/5/2019 B
26/5/2019 A 253
26/5/2019 C 769
27/5/2019 C 506
Run Code Online (Sandbox Code Playgroud)
我想按始终以 A、B、C 开头的序列转置 col。预期输出是。
Date final values
25/5/2019 25
25/5/2019 765.3
25/5/2019 896
26/5/2019 98
26/5/2019 null
26/5/2019 769
27/5//2019 203
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。提前致谢
另外一点,我现在需要输出列的最终值。我需要指定每个值属于哪一列,为此我有三列的代码。例如A=100,B=200,C=100。有什么方法可以在每列值旁边打印代码