我有一个具有以下结构的 Pandas 数据框:
A B C
a b 1
a b 2
a b 3
c d 7
c d 8
c d 5
c d 6
c d 3
e b 4
e b 3
e b 2
e b 1
Run Code Online (Sandbox Code Playgroud)
我想把它改成这样:
A B C1 C2 C3 C4 C5
a b 1 2 3 NAN NAN
c d 7 8 5 6 3
e b 4 3 2 1 NAN
Run Code Online (Sandbox Code Playgroud)
换句话说,类似于对 A 和 B 进行分组并将 C 扩展到不同的列。
知道每组的长度是不同的。
C已经订购了 …
鉴于此数据框:
feature score searchTerm
0 a 0.534509 pizza
1 b 0.586020 pizza
2 c 0.588972 pizza
3 a 0.566261 chinese
4 b 0.572405 chinese
5 c 0.489369 chinese
6 a 0.499068 thai
7 b 0.431068 thai
8 c 0.441617 thai
Run Code Online (Sandbox Code Playgroud)
功能仅限于(a,b,c)
我想将数据框转换为:
a b c searchTerm
0.534509 0.586020 0.588972 pizza
0.566261 0.572405 0.489369 chinese
0.499068 0.431068 0.441617 thai
...
...
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,如下所示:
PLEASE_REMOVE 2013 2014 2015
THIS_IS_EASY
-------------------------------
Bob 0 3 4
Mary 2 3 6
Run Code Online (Sandbox Code Playgroud)
年份(2013、2014、2015)是列索引标签。名称(Mary,Bob)是行索引标签。
我以某种方式设法获得行索引和列索引的标签。
使用df.index.names = ['']我可以删除THIS_IS_EASY位。
如何删除PLEASE_REMOVE位?
所需的输出是:
2013 2014 2015
-------------------------------
Bob 0 3 4
Mary 2 3 6
Run Code Online (Sandbox Code Playgroud) 所以我的数据集有一些业务 n 日期的信息,如下所示:
Business Date Value
a 1/1/2017 127
a 2/1/2017 89
b 2/1/2017 122
a 1/1/2018 555
a 2/1/2018 455
Run Code Online (Sandbox Code Playgroud)
我需要以下格式的数据:我如何转置它。我不想在我的输出数据集中多级
Business 1/1/2017 2/1/2017 1/1/2018 2/1/2018
a 127 89 555 455
b N/A 122 N/A N/A
Run Code Online (Sandbox Code Playgroud)
我尝试了以下语法:
df = df.set_index(['Business','Date'])['Value'].unstack()
df=df.pivot(index='Business', columns='Date', values='Value')
Run Code Online (Sandbox Code Playgroud)
我得到如下输出:
Date 1/1/2017 2/1/2017 1/1/2018 2/1/2018
Business
a 454 5555 555 444
b - 444 - -
Run Code Online (Sandbox Code Playgroud)
当我打印列时,它不会将 LOB 显示为列。我的最终数据框还应包括业务、日期字段作为列,以便我可以将此数据框与业务上的另一个数据框连接起来
我有一个 Pandas DataFrame,其中一列包含布尔值。想想这样的事情:
id is_male count
0 1 True 10
1 1 False 8
2 2 True 5
3 2 False 10
4 3 True 3
5 3 False 4
Run Code Online (Sandbox Code Playgroud)
例如,其中id标识一个学校班级,其他列表示班级中有多少男学生和女学生。现在,相同的信息可以以更简洁的方式呈现,例如:
id male female
0 1 10 8
1 2 5 10
2 3 3 4
Run Code Online (Sandbox Code Playgroud)
我的问题:是否有一种干净的方法,使用 Pandas 将第一个 DataFrame 转换为第二个 DataFrame?我有一个实现,但既不干净也不短。如果需要的话我可以提供,但我不想让我的问题陈述变得混乱。
在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) 假设我有以下格式的数据:
group_id | entity_id | value
A a1 5
A a2 3
A a3 2
B b1 10
B b2 8
B b3 11
C c1 2
C c2 6
C c3 NaN
Run Code Online (Sandbox Code Playgroud)
表格1。
所以每个组(A/B/C)将有 3 个实体,保证。每个实体都有一个对应的值(如果不存在,有时是 NaN)。
我想将这些数据从现有格式重塑为...:
group_id | entity_1 | entity_2 | entity_3
A 5 3 2
B 10 8 11
C 2 6 NaN
Run Code Online (Sandbox Code Playgroud)
表 2。
其中entity_1/entity_2/entity_3分别对应a1/a2/a3(或b1/b2/b3、c1/c2/c3)。
我该怎么做呢?
我发现的一种解决方案是使用枢轴函数,因此...
df.pivot(index='group_id', columns='entity_id', values='value')
Run Code Online (Sandbox Code Playgroud)
但据我所知,这个问题的问题在于,结果重整数据透视表中实体的列将不会采用我在上面表 2 中想要的格式——这对于我正在使用的一些下游内容很重要数据。
我可能会问一个愚蠢的问题,但我很难找到使用现有的枢轴/熔化函数以上述方式从长到宽的方法。谁能帮我吗?
如有必要,我很乐意提供更多详细信息,请告诉我!
我有一个pandas数据框,其中包含如下所示的数据:
ID year_month_id Class
1 201612 A
2 201612 D
3 201612 B
4 201612 Other
5 201612 Other
6 201612 Other
7 201612 A
8 201612 Other
9 201612 A
1 201701 B
Run Code Online (Sandbox Code Playgroud)
因此,ID可以在特定月份的任何课程中,下个月他的课程可能会发生变化.现在我要做的是为每个ID获取它在特定类下的月数以及它所属的最新类.如下所示:
ID Class_A Class_B Class_D Other Latest_Class
1 2 3 4 0 B
2 12 0 0 0 D
Run Code Online (Sandbox Code Playgroud)
我如何在python中实现这一点.有人可以帮我这个吗?此外,由于真实数据集很大并且无法手动验证,我如何才能获得超过1类的ID列表?
我正在尝试通过将数据中的一列转换为行(通过旋转或取消堆叠)来重塑 Pandas 数据框。
我对此很陌生,很可能我遗漏了一些明显的东西。我进行了广泛的搜索,但未能成功应用我遇到的任何解决方案。
df
Location Month Metric Value
0 Texas January Temperature 10
1 New York January Temperature 20
2 California January Temperature 30
3 Alaska January Temperature 40
4 Texas January Color Red
5 New York January Color Blue
6 California January Color Green
7 Alaska January Color Yellow
8 Texas February Temperature 15
9 New York February Temperature 25
10 California February Temperature 35
11 Alaska February Temperature NaN
12 Texas February Color NaN
13 New York …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的熊猫数据框:
timestamp status
2019-01-01 09:00:00 FAILED
2019-01-01 09:00:00 FAILED
2019-01-01 09:00:00 UNKNOWN
2019-01-01 09:00:00 PASSED
2019-01-01 09:00:00 PASSED
2019-01-01 09:01:00 PASSED
2019-01-01 09:01:00 FAILED
Run Code Online (Sandbox Code Playgroud)
如何对每分钟的数据进行分组并统计每分钟每个状态的数量以获得此数据框:
timestamp PASSED FAILED UNKNOWN
2019-01-01 09:00:00 2 2 1
2019-01-01 09:01:00 1 1 0
Run Code Online (Sandbox Code Playgroud) pandas ×10
python ×10
dataframe ×5
pivot ×2
group-by ×1
pandas-melt ×1
pivot-table ×1
python-2.7 ×1
python-3.x ×1
reshape ×1