簡體   English   中英

將熊貓行成對分組,然后找到timedelta

[英]Group pandas rows into pairs then find timedelta

我有一個數據幀,需要將TX / RX列成對分組,然后將它們放入具有新索引和它們之間的timedelta作為值的新數據幀中。

df = pd.DataFrame()
df['time1'] = pd.date_range('2018-01-01', periods=6, freq='H') 
df['time2'] = pd.date_range('2018-01-01', periods=6, freq='1H1min')
df['id'] = ids
df['val'] = vals

                time1               time2  id val
0 2018-01-01 00:00:00 2018-01-01 00:00:00   1   A
1 2018-01-01 01:00:00 2018-01-01 01:01:00   2   B
2 2018-01-01 02:00:00 2018-01-01 02:02:00   3   A
3 2018-01-01 03:00:00 2018-01-01 03:03:00   4   B
4 2018-01-01 04:00:00 2018-01-01 04:04:00   5   A
5 2018-01-01 05:00:00 2018-01-01 05:05:00   6   B

需要是...

index    timedelta    A   B
  0      1            1   2
  1      1            3   4
  2      1            5   6

我認為,pivot_tables或stack / unstack可能是解決此問題的最佳方法,但是我不確定如何...

我相信您需要:

df = pd.DataFrame()
df['time1'] = pd.date_range('2018-01-01', periods=6, freq='H') 
df['time2'] = df['time1'] + pd.to_timedelta([60,60,120,120,180,180], 's')
df['id'] = range(1,7)
df['val'] = ['A','B'] * 3

df['t'] = df['time2'] - df['time1']
print (df)
                time1               time2  id val        t
0 2018-01-01 00:00:00 2018-01-01 00:01:00   1   A 00:01:00
1 2018-01-01 01:00:00 2018-01-01 01:01:00   2   B 00:01:00
2 2018-01-01 02:00:00 2018-01-01 02:02:00   3   A 00:02:00
3 2018-01-01 03:00:00 2018-01-01 03:02:00   4   B 00:02:00
4 2018-01-01 04:00:00 2018-01-01 04:03:00   5   A 00:03:00
5 2018-01-01 05:00:00 2018-01-01 05:03:00   6   B 00:03:00

#if necessary convert to seconds
#df['t'] = (df['time2'] - df['time1']).dt.total_seconds()
df = df.pivot('t','val','id').reset_index().rename_axis(None, axis=1)
#if necessary aggregate values
#df = (df.pivot_table(index='t',columns='val',values='id', aggfunc='mean')
#        .reset_index().rename_axis(None, axis=1))
print (df)
         t  A  B
0 00:01:00  1  2
1 00:02:00  3  4
2 00:03:00  5  6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM