簡體   English   中英

Python Pandas將計算寫入新的Csv文件

[英]Python Pandas Write Calculations to New Csv File

使用:Python 3.6,Pandas 0.22

我正在嘗試使用DataFrame的最后一行計算平均值,並將其以特定格式寫入新的.csv文件。

df2 = pd.read_csv("Data.csv")

gname = df2.groupby(['NAME'])

for NAME,  NAME_df2 in gname:
    df2['DATE'] = pd.to_datetime(df2['DATE'])
    df2.groupby([df2.DATE.dt.month,'NAME'])['SNOW'].mean().sort_values().to_csv('avg.csv')

這是我想要的avg.csv文件的輸出:

NAME   MONTH    AVERAGE
    GRAND RAPIDS GERALD R FORD INTERNATIONAL AIRPORT, MI US January, 0.006451613

在我看來,邏輯應該是:

df2.groupby([df2.DATE.dt.month,'NAME'])['SNOW'].mean().sort_values().to_csv('avg.csv', columns = 'NAME', 'MONTH', 'AVERAGE')

我嘗試在變量中創建月份和列標題“ AVERAGE”以寫入新文件,但這不起作用。 我一直在搜索文檔以測試更多內容,但是找不到與此問題相關的任何內容。

或另一種嘗試創建新列的嘗試,但這不適用於將它們與“ NAME”列鏈接:

df2 = df2.convert_objects(convert_numeric=True)
df['MONTH']='?'
(df
 .assign(MONTH=df['DATE'].dt.strftime('%B'))  # Use `%B` for full name of month
 .groupby(['NAME', 'MONTH'], as_index=False)['SNOW']
 .agg({'AVERAGE': 'mean'})  # Effectively renames the SNOW column to AVERAGE.
)

為了使月份按自然順序排序,您可能需要使用.strftime('(%m) %B') ,這將導致生成'(01 01 January),'(02 02 February)等。

要將年份作為單獨的列包括在內,您可以執行以下操作:

dates = pd.DatetimeIndex(df['DATE'])
(df
 .assign(MONTH=dates.dt.strftime('%B'),  # Use `%B` for full name of month
         YEAR=dates.dt.strftime('%Y'))
 .groupby(['NAME', 'YEAR', 'MONTH'], as_index=False)['SNOW']
 .agg({'AVERAGE': 'mean'})  # Effectively renames the SNOW column to AVERAGE.
)

暫無
暫無

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

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