这并不像应有的那样时尚(由于大量的 if 语句),但它确实有效:
import pandas as pd
mydf = {'Month': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
'Freq': [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]}
my_df = pd.DataFrame(mydf, columns=['Month', 'Freq'])
winter_counter = 0
spring_counter = 0
summer_counter = 0
autumn_counter = 0
for i in range(len(my_df)):
#print(my_df.at[i,'Month'])
if(my_df.at[i,'Month'] == 12 or my_df.at[i,'Month'] == 1 or my_df.at[i,'Month'] == 2):
winter_counter = winter_counter + my_df.at[i,'Freq']
if(my_df.at[i,'Month'] == 3 or my_df.at[i,'Month'] == 4 or my_df.at[i,'Month'] == 5):
spring_counter = spring_counter + my_df.at[i,'Freq']
if(my_df.at[i,'Month'] == 6 or my_df.at[i,'Month'] == 7 or my_df.at[i,'Month'] == 8):
summer_counter = summer_counter + my_df.at[i,'Freq']
if(my_df.at[i,'Month'] == 9 or my_df.at[i,'Month'] == 10 or my_df.at[i,'Month'] == 11):
autumn_counter = autumn_counter + my_df.at[i,'Freq']
data_for_result = {
'Season': ['Winter','Spring','Summer','Autumn'],
'Freq': [winter_counter, spring_counter, summer_counter, autumn_counter],
}
my_result = pd.DataFrame(data_for_result,columns = ['Season','Freq'])
print(my_result)
如果您需要解释:
.at:访问一个奇异值 [row,columnName],我首先使用它来查看该行属于哪个季节,然后访问 freq 以将其添加到其对应的计数器中
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.at.html#pandas.DataFrame.at