我有这个DataFrame:
df = pd.DataFrame({'1-sensor':['608', '608', '2158', '2158'],
'2-day':['2017-12-11', '2017-12-12', '2017-12-11', '2017-12-12'],
'3-voltage':[30, 31, 28, 29]})
df:
1-sensor 2-day 3-voltage
0 608 2017-12-11 30
1 608 2017-12-12 31
2 2158 2017-12-11 28
3 2158 2017-12-12 29
我想使它看起来像这样:
pd.DataFrame({'1-sensor':['608', '2158'],
'2017-12-11':[30, 28],
'2017-12-12':[31, 29]})
df:
1-sensor 2017-12-11 2017-12-12
0 608 30 31
1 2158 28 29
我尝试了结合.groupby('sensor')
和.unstack()
的不同解决方案,但未成功。有什么好的建议吗?
谢谢!
参考方案
选项1
如果没有聚合,请使用pivot
。这实际上更有效-
df.pivot(index='1-sensor', columns='2-day', values='3-voltage')
2-day 2017-12-11 2017-12-12
1-sensor
2158 28 29
608 30 31
如果要执行任何聚合,请使用pivot_table
并包含aggfunc=...
。
选项2set_index
+ unstack
的另一种解决方案-
df.set_index(['1-sensor', '2-day']).unstack()
3-voltage
2-day 2017-12-11 2017-12-12
1-sensor
2158 28 29
608 30 31
如果需要聚合,则groupby
+ unstack
将执行此操作。你就这么近
df.groupby(['1-sensor', '2-day'], sort=False).sum().unstack()
3-voltage
2-day 2017-12-11 2017-12-12
1-sensor
608 30 31
2158 28 29
如果需要使用sum
替换为要使用的aggfunction。
我对Python相当陌生,我尝试在pandas中模拟以下逻辑我目前正在循环抛出行,并希望对前几行的AMOUNT列中的值求和,但只求和最后一次看到的“ TRUE”值。实际数据似乎效率低下(我的数据框大约有500万行)?想知道用Python处理这种逻辑的有效方法是什么?逻辑:逻辑是,如果FLAG为TRUE,我想对前几行的AMOUNT列中的值求和,但只求和最后一次…
如何从'pandas.core.frame.DataFrame'中消除第一列 - python我有以以下格式输出的代码。我应该如何删除第一列并可以将第二行的元素存储在列表中?输出类型为'pandas.core.frame.DataFrame'格式 speed lat lng 1 19.130506 12.616756 7.460664 2 63.595894 52.616838 7.460691 3 40.740044 72.616913 7.460…
pandas.DataFrame.replace更改列的dtype - python因此,我试图用np.nan替换数据框中的None值,并注意到在此过程中,即使数据框中的float列的数据类型不包含任何丢失的数据,它们也都更改为object。举个例子:import pandas as pd import numpy as np data = pd.DataFrame({'A':np.nan,'B':1…
Pandas Dataframe:在越来越多的列上循环并计算均值和标准差 - python基本上,我有一个包含20个属性和一个值的表。我想找到std = 0-(即粒度级别完美允许1:1)所需的最少数量的属性。我想建立一个循环如果使用列名进行硬编码,则看起来像这样:for iter in range(1,21): dfcalc = df.groupby("LINE_NUM")["RATIO"].agg([np…
Python:如何根据另一列元素明智地查找一列中的空单元格计数? - pythondf = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…