给定以下数据帧:
import pandas as pd
DF = pd.DataFrame({'COL1': ['A', 'A', 'A', 'B','B','B'],
'COL2' : [1,2,3,1,2,3],
'COL3': [11032, 1960, 11400, 11355, 8, 7],
'year': ['2016', '2017', '2018', '2019', '2020', '2021']})
DF
COL1 COL2 COL3 COL4 year
0 A 1 2 11032 2016
1 A 2 2 1960 2017
2 A 3 4 11400 2018
3 B 1 2 11355 2019
4 B 2 2 8 2020
5 B 3 4 7 2021
我只想通过COL1来解开“COL4”和“Year”,同时保持COL2和COL3的机智。最终结果应如下所示:
COL2 COL3 COL4 (A) year (A) COL4 (B) year (B)
0 1 2 11032 2016 11355 2019
1 2 2 1960 2017 8 2020
2 3 4 11400 2018 7 2021
另外,如果在“COL1”下有一些记录没有“A”怎么办?
我假设解压时,解决方案将在COL2和COL3上查找匹配的记录(如果使用的是这种方法)。我的意思是,如果列的顺序没有像我的例子中那样排序,它将生成相同的结果。
谢谢
您可以按前3列设置多索引,并使用unstack和level=0
然后,您可以重命名列名称,也可以按级别
和标签
或自定义名称重命名列名称。
# COL1 COL2 COL3 COL4 year
#0 A 1 2 11032 2016
#1 A 2 2 1960 2017
#2 A 3 4 11400 2018
#3 B 1 2 11355 2019
#4 B 2 2 8 2020
#5 B 3 4 7 2021
DF = DF.set_index(['COL1', 'COL2', 'COL3'])
DF = DF.unstack(0).reset_index()
print DF
# COL2 COL3 COL4 year
#COL1 A B A B
#0 1 2 11032 11355 2016 2019
#1 2 2 1960 8 2017 2020
#2 3 4 11400 7 2018 2021
levels = DF.columns.levels
labels = DF.columns.labels
DF.columns = levels[0][labels[0]]
print DF
# COL2 COL3 COL4 COL4 year year
#0 1 2 11032 11355 2016 2019
#1 2 2 1960 8 2017 2020
#2 3 4 11400 7 2018 2021
DF.columns = ['COL2','COL3','COL4','COL5','COL6','COL7']
print DF
# COL2 COL3 COL4 COL5 COL6 COL7
#0 1 2 11032 11355 2016 2019
#1 2 2 1960 8 2017 2020
#2 3 4 11400 7 2018 2021
但是如果列COL2
和COL3
的顺序不同,您可以使用Andy Hayden的little hack:
# COL1 COL2 COL3 COL4 year
#0 A 4 6 11032 2016
#1 A 9 2 1960 2017
#2 A 8 4 11400 2018
#3 B 4 6 11355 2019
#4 B 9 2 8 2020
#5 B 8 4 7 2021
DF = DF.set_index(['COL1', 'COL2', 'COL3'])
index = pd.MultiIndex(levels=[DF.index.get_level_values(1).unique(),
DF.index.get_level_values(2).unique()],
labels=[[0, 1, 2],
[0, 1, 2]])
DF = DF.unstack(0)
DF = DF.reindex(index).reset_index()
print DF
# level_0 level_1 COL4 year
#COL1 A B A B
#0 4 6 11032 11355 2016 2019
#1 9 2 1960 8 2017 2020
#2 8 4 11400 7 2018 2021
levels = DF.columns.levels
labels = DF.columns.labels
DF.columns = levels[0][labels[0]]
print DF
# level_0 level_1 COL4 COL4 year year
#0 4 6 11032 11355 2016 2019
#1 9 2 1960 8 2017 2020
#2 8 4 11400 7 2018 2021
DF.columns = ['COL2','COL3','COL4','COL5','COL6','COL7']
print DF
# COL2 COL3 COL4 COL5 COL6 COL7
#0 4 6 11032 11355 2016 2019
#1 9 2 1960 8 2017 2020
#2 8 4 11400 7 2018 2021
我们有一个Kafka制作人,偶尔会制作一些信息。 我写了一个消费者来消费这些消息。问题是,只有当两个消息叠加时,它们才会被使用。例如,如果消息是在13:00产生的,消费者不做任何事情。如果另一条消息是在13:01生成的,则消费者会使用这两条消息。在kafkaTool中,在消费者属性中有一个名为LAG的列,当消息未被消费时,该列为1。我缺少的这个东西有什么配置吗? 消费者配置:
问题内容: 我正在尝试在数据库中进行几行的mysql转储。然后,我可以使用转储将那几行上载到另一个数据库中。我拥有的代码正在运行,但是它会转储所有内容。我怎样才能使mysqldump只转储表的某些行? 这是我的代码: 问题答案: 只需解决您的选择。它应该是有效的SQL WHERE子句,例如: 您将列名放在引号之外。
问题内容: 如果我有一些代码,例如 并且输入文件包含成对的行,我该如何做,以便仅导入每行的第一行?因此,换句话说,每条奇数行都只有?谢谢 问题答案: 您可能想考虑使用来简化奇数行()的过滤。或者在另一种方法中,如果您使用的是JDK7,则可以使用该方法,并在迭代时再次过滤奇数。
你好,我看到的日志信息只在某些类,不知道在哪里看。是我的原木模式搞错了还是?这是我的log4j配置,我将它与sfl4j一起使用: null 我创建的记录器是这样的,类字段: 和日志记录,如: 有什么想法吗? 更新 根据Petar Minchev的回答改为信息,但我仍然没有得到任何东西。 更新II 现在,在添加了一些依赖项之后,它可以在一些类上工作(仍然不能在其他一些类上工作)。有一些实现runna
我使用intern.js和硒网格来测试我的应用程序web,当我在节点机器(MAC)上运行Chrome测试时,我得到这个错误: 您正在使用不支持的命令行标志-忽略-证书-错误稳定性和安全性将受到影响
问题内容: 我想找出悬停时如何制作 旋转或旋转的图像 。我想知道如何在以下代码上使用 CSS 模仿该功能: 问题答案: 您可以将CSS3过渡与一起使用,以 在悬停时旋转图像 。 旋转图像: