计数并查找最小值,最大值出现在数据框列中
Count and Find Min, Max of value occurs in a dataframe column
我有一个这样的数据框
Date | DayName | A | B | C
2022-03-01 Tuesday 50 20 40
2022-03-02 Wednesday 10 10 20
2022-03-03 Thurday 64 1 9
2022-03-04 Friday 9 7 12
我想添加如下行:
Date | DayName | A | B | C
2022-03-01 Tuesday 50 20 40
2022-03-02 Wednesday 10 10 20
2022-03-03 Thurday 64 1 9
2022-03-04 Friday 9 7 12
Count 4 4 4
Min 9 1 9
Max 64 20 40
我尝试通过
添加一行
new_row = {'Date':'','DayName': '','A':'','B':'','C':''}
frame = frame.append(new_row,ignore_index = True)```
但我不知道如何计算和找到最小值、最大值。
请有人帮助我
试试这个
这不是最好的方法,但我认为它适合您的需要。
import pandas as pd
import numpy as np
df1 = {
'Date':['2022-03-01', '2022-03-02', '2022-03-03', '2022-03-04'],
'DayName':['Tuesday', 'Wednesday', 'Thurday', 'Friday'],
'A':[50, 10, 64, 9],
'B' :[20, 10, 1, 7],
'C':[40, 20, 9, 12]
}
df1 = pd.DataFrame(df1)
print(df1)
countdf = df1.count(axis=0).values.tolist()[2:]
mindf = df1.min(axis=0).values.tolist()[2:]
maxdf = df1.max(axis=0).values.tolist()[2:]
df2 = {
'Date':['', '', ''],
'DayName':['', '', ''],
'A': [countdf[0],mindf[0],maxdf[0]],
'B' :[countdf[1],mindf[1],maxdf[1]],
'C': [countdf[2],mindf[2],maxdf[2]]
}
df2 = pd.DataFrame(df2, index = ['count','min','max'])
print(f'\n\n-------------BREAK-----------\n\n')
f = [df1,df2]
df1 = pd.concat(f)
print(df1)
您可以尝试在行上聚合多个函数,然后连接数据帧
cols = ['A', 'B', 'C']
agg = (df[cols].agg(['count', min, max])
.rename_axis('Date')
.reset_index())
out = pd.concat([df, agg])
print(out)
Date DayName A B C
0 2022-03-01 Tuesday 50 20 40
1 2022-03-02 Wednesday 10 10 20
2 2022-03-03 Thurday 64 1 9
3 2022-03-04 Friday 9 7 12
0 count NaN 4 4 4
1 min NaN 9 1 9
2 max NaN 64 20 40
我有一个这样的数据框
Date | DayName | A | B | C
2022-03-01 Tuesday 50 20 40
2022-03-02 Wednesday 10 10 20
2022-03-03 Thurday 64 1 9
2022-03-04 Friday 9 7 12
我想添加如下行:
Date | DayName | A | B | C
2022-03-01 Tuesday 50 20 40
2022-03-02 Wednesday 10 10 20
2022-03-03 Thurday 64 1 9
2022-03-04 Friday 9 7 12
Count 4 4 4
Min 9 1 9
Max 64 20 40
我尝试通过
添加一行new_row = {'Date':'','DayName': '','A':'','B':'','C':''}
frame = frame.append(new_row,ignore_index = True)```
但我不知道如何计算和找到最小值、最大值。 请有人帮助我
试试这个
这不是最好的方法,但我认为它适合您的需要。
import pandas as pd
import numpy as np
df1 = {
'Date':['2022-03-01', '2022-03-02', '2022-03-03', '2022-03-04'],
'DayName':['Tuesday', 'Wednesday', 'Thurday', 'Friday'],
'A':[50, 10, 64, 9],
'B' :[20, 10, 1, 7],
'C':[40, 20, 9, 12]
}
df1 = pd.DataFrame(df1)
print(df1)
countdf = df1.count(axis=0).values.tolist()[2:]
mindf = df1.min(axis=0).values.tolist()[2:]
maxdf = df1.max(axis=0).values.tolist()[2:]
df2 = {
'Date':['', '', ''],
'DayName':['', '', ''],
'A': [countdf[0],mindf[0],maxdf[0]],
'B' :[countdf[1],mindf[1],maxdf[1]],
'C': [countdf[2],mindf[2],maxdf[2]]
}
df2 = pd.DataFrame(df2, index = ['count','min','max'])
print(f'\n\n-------------BREAK-----------\n\n')
f = [df1,df2]
df1 = pd.concat(f)
print(df1)
您可以尝试在行上聚合多个函数,然后连接数据帧
cols = ['A', 'B', 'C']
agg = (df[cols].agg(['count', min, max])
.rename_axis('Date')
.reset_index())
out = pd.concat([df, agg])
print(out)
Date DayName A B C
0 2022-03-01 Tuesday 50 20 40
1 2022-03-02 Wednesday 10 10 20
2 2022-03-03 Thurday 64 1 9
3 2022-03-04 Friday 9 7 12
0 count NaN 4 4 4
1 min NaN 9 1 9
2 max NaN 64 20 40