我有一個熊貓據幀像這樣,合併行基於索引
Timestamp Meter1 Meter2
0 234 NaN
1 235 NaN
2 236 NaN
0 NaN 100
1 NaN 101
2 NaN 102
,我有麻煩了基於索引時間戳是這樣的合併行,
Timestamp Meter1 Meter2
0 234 100
1 235 101
2 236 102
我有一個熊貓據幀像這樣,合併行基於索引
Timestamp Meter1 Meter2
0 234 NaN
1 235 NaN
2 236 NaN
0 NaN 100
1 NaN 101
2 NaN 102
,我有麻煩了基於索引時間戳是這樣的合併行,
Timestamp Meter1 Meter2
0 234 100
1 235 101
2 236 102
使用groupby
:
df.groupby(level=0).max()
OR
df.groupby('Timestamp').max()
輸出
Meter1 Meter2
Timestamp
0 234.0 100.0
1 235.0 101.0
2 236.0 102.0
使用groupby
和聚集sum
:
df = df.groupby(level=0).sum()
print (df)
Meter1 Meter2
Timestamp
0 234.0 100.0
1 235.0 101.0
2 236.0 102.0
如果只ints
:
df = df.groupby(level=0).sum().astype(int)
print (df)
Meter1 Meter2
Timestamp
0 234 100
1 235 101
2 236 102
但也許問題是您在concat
忘記axis=1
:
print (df1)
Meter1
Timestamp
0 234
1 235
2 236
print (df2)
Meter2
Timestamp
0 100
1 101
2 102
print (pd.concat([df1, df2]))
Meter1 Meter2
Timestamp
0 234.0 NaN
1 235.0 NaN
2 236.0 NaN
0 NaN 100.0
1 NaN 101.0
2 NaN 102.0
print (pd.concat([df1, df2], axis=1))
Meter1 Meter2
Timestamp
0 234 100
1 235 101
2 236 102
選項0
df.max(level=0)
Meter1 Meter2
Timestamp
0 234.0 100.0
1 235.0 101.0
2 236.0 102.0
選項1
df.sum(level=0)
Meter1 Meter2
Timestamp
0 234.0 100.0
1 235.0 101.0
2 236.0 102.0
的Opti 2
令人不安的回答
df.stack().unstack()
Meter1 Meter2
Timestamp
0 234.0 100.0
1 235.0 101.0
2 236.0 102.0
正如@jezrael長大並鏈接到發行here
然而,正如我理解groupby.first
和groupby.last
是,它會返回第一個(或最後一個)組中的每個列的有效值。換句話說,我相信這是按預期工作的。
選項3
df.groupby(level=0).first()
Meter1 Meter2
Timestamp
0 234.0 100.0
1 235.0 101.0
2 236.0 102.0
選項4
df.groupby(level=0).last()
Meter1 Meter2
Timestamp
0 234.0 100.0
1 235.0 101.0
2 236.0 102.0
我會提到它,但是這是預期的行爲。也就是說,它正在選擇第一個非空值或有效值。使用last會選擇最後一個非空值或有效值。 – piRSquared
事實上,你的答案是唯一沒有upvotes意味着你是upvoter。不幸的是,沒有人會回報你的青睞... hrrumph –
@cᴏʟᴅsᴘᴇᴇᴅ參見**選項2 **另外,不打擾我( - :我喜歡我的答案! – piRSquared