[英]How to get maximum value from dataframe with numeric indexes and headings
我有以下數據幀:
df:
Unnamed: 0 0 1
0 0.0 0.000000 NaN
1 1.0 2.236068 0.000000
2 2.0 3.000000 2.236068
3 NaN 0.000000 1.000000
4 0.0 0.000000 NaN
5 1.0 1.414214 0.000000
6 2.0 2.828427 1.414214
7 NaN 0.000000 1.000000
8 0.0 0.000000 NaN
9 1.0 3.162278 0.000000
10 2.0 11.401754 3.162278
11 NaN 0.000000 1.000000
12 0.0 0.000000 NaN
13 1.0 14.142136 0.000000
14 2.0 2.828427 14.142136
我試圖從每組數據中獲取最大值,問題是我從幾個操作生成了這個數據幀,但最后索引和標題是數字,我不能使用groupby
或loc.
我需要的是如下內容:
df1
0
1 3.000000
2 2.828427
3 11.401754
4 14.142136
你絕對使用loc
! 問題是你沒有注意df.columns
是整數還是字符串。 既然你遇到了問題,那我猜是字符串。
但是,你要做的事情一點也不清楚
IIUC
m = df['0'] == 0
g = m.cumsum()[~m]
df.loc[~m, '0'].groupby(g).max()
使用.iloc
和cumsum
:
df.groupby((~df.iloc[:,0].astype(bool)).cumsum()).max()
輸出:
Unnamed: 0 0 1
Unnamed: 0
1 2.0 3.000000 2.236068
2 2.0 2.828427 1.414214
3 2.0 11.401754 3.162278
4 2.0 14.142136 14.142136
要獲得列索引1的最大值:
df.groupby((~df.iloc[:,0].astype(bool)).cumsum()).max().iloc[:,1]
輸出:
Unnamed: 0
1 3.000000
2 2.828427
3 11.401754
4 14.142136
Name: 0, dtype: float64
file.csv :
0,1,2,3
9,6,7,
0,,,
5,6,2
嘗試:
import pandas as pd
df = pd.read_csv('file.csv', header=-1)
# keep only max per row
print(df.max(axis=1))
輸出:
0 3.0
1 9.0
2 0.0
3 6.0
dtype: float64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.