我在csv
文件中有数据如下:
60,27702,1938470,13935,18513,8
60,32424,1933740,16103,15082,11
60,20080,1946092,9335,14970,2
60,28236,1937936,13799,16871,6
60,22717,1943455,10809,16726,4
120,37702,2938470,23935,28513,8
120,42424,2933740,26103,25082,11
120,30080,2946092,2335,24970,2
120,38236,2937936,23799,26871,6
120,32717,2943455,20809,26726,4
180,47702,3938470,33935,8513,8
180,52424,3933740,36103,5082,11
180,40080,3946092,3335,4970,2
180,48236,3937936,33799,6871,6
180,42717,3943455,30809,6726,4
然后我使用以下代码插入列标题:
df = pd.read_csv("contikiMAC_new_out.csv", names=['Energest','CPU','LPM','Transmit','Listen','ID'])
我使用df.groupby(['ID'])
根据列' ID'来查看组中的数据。
问题是列< LPM'中的数据。一段时间后重置,所以每当LPM列中的新值对于特定的ID'时,我想用新值添加前一个值。 。
我试过了:
for x in df.groupby(['ID']):
for i in df.ID:
if (df.loc[i, 'LPM'] < df.loc[i - 1, 'LPM']):
df.loc[i, 'LPM'] = df.loc[i, 'LPM'] + df.loc[i - 1, 'LPM']
但实际上并没有得到我想要的卓有成效的结果,因为它与“LPM”混合在一起。不同ID的价值&#39;这个过程需要很长时间。任何人都可以帮我建议一种基于&#39; ID&#39;在csv文件中编写数据组的方法。执行总和操作后?
我想看的数据结构如下:
60,27702,1938470,13935,18513,8
120,37702,2938470,23935,28513,8
180,47702,3938470,33935,37026,8
60,32424,1933740,16103,15082,11
120,42424,2933740,26103,25082,11
180,52424,3933740,36103,30164,11
60,20080,1946092,9335,14970,2
120,30080,2946092,2335,24970,2
180,40080,3946092,3335,29940,2
60,28236,1937936,13799,16871,6
120,38236,2937936,23799,26871,6
180,48236,3937936,33799,33742,6
60,22717,1943455,10809,16726,4
120,32717,2943455,20809,26726,4
180,42717,3943455,30809,33452,4
答案 0 :(得分:0)
如果我理解您的问题,DataFrame.shift就是您正在寻找的。 p>
类似的东西:
df['LPM_prev'] = df.groupby(['ID'])['LPM'].shift(1)
然后您可以使用该列