我不太熟悉熊猫。
我的主要目标是在烘焙当前文件(如上所示)中的数据之后创建一个新的csv文件。我想分步做的事情:
01)聚合数据:首先,按ID对行进行分组,并具有:
每个ID的最早开始日期
每个ID的最新结束日期
每个ID的值之和
02)按ID对行进行分组,并对我选择的任意列进行分组:
每个ID的最早开始日期
每个ID的最新结束日期
每个ID的值之和
将random 1和random 2值与其他数据(分组)一起呈现
在不分组数据的情况下,我能够得到最早的开始日期、最晚的结束日期以及值的总和。代码如下(对于1个ID):
#Get the first Start Date
minStartDate = df.loc[ df['ID'] == 56886, 'Start Date'].min()
#Get the last End Date
maxEndDate = df.loc[ df['ID'] == 56886, 'End Date'].max()
#Get the value sum
sumValue = df.loc[ df['ID'] == 56886, 'Value'].sum()
然后我把它按所有ID分组:
^{pr2}$打印后,我得到了maxEndDate、minStartDate、sumValue、ID的正确值。问题是它只显示一个ID的值(文件中的最后一个):
在本例中,这是预期的输出(忽略随机列之后):
所以,我把剧本改成:
minStartDate = {}
maxEndDate = {}
summyValue = {}
Key = {}
ID = df[' ID']
for i in ID:
Key[i] = df.loc[ df['ID'] == i, 'ID']
#Get the first Start Date
minStartDate[i] = df.loc[ df['ID'] == i, 'Start Date'].min()
#Get the last End Date
maxEndDate[i] = df.loc[ df['ID'] == i, 'End Date'].max()
#Get the Value sum
summyValue[i] = df.loc[ df['ID'] == i, 'Value'].sum()
print(summyValue,minStartDate,maxEndDate)
在候机厅我看到了这个:
考虑到最终预期产出为:
我该怎么玩弄场地的组合呢?在for循环中,我猜我应该包括Random 1和Random 2列(创建键)。另外,为了在新的CSV文件中导出所有内容,for循环的最佳输出是什么?在
如果你想用最大重复值填充random 1和random 2,你可以用你自己的函数,例如
或者用lambda,如果你想在一条线上
^{pr2}$输出:
正如Jon所说,你可以使用agg在一行中完成所有步骤,即
如果您希望与random1和random2一起分组,则可以使用
相关问题 更多 >
编程相关推荐