簡體   English   中英

如何在Pandas中串聯數據框

[英]How to concatenate dataframes in Pandas

我有1985-2014年間有關最低和最高溫度的氣象數據以及各個氣象站的降水。 我已經在熊貓中使用GroupBy找到了每年的平均最低和最高溫度。

data1= data
#Replaceing missing values represented by -9999 with 0
df2=data1.replace(to_replace=-9999,value=0)
#performing groupby over the year part of the string given in Date
df3=data1.groupby(df2.Date.str[0:4])
tmp=df3['MaxTemp'].mean().to_frame()
 Date MaxTemp 1985 153.347945 1986 126.963370 .... ...... 
fileName=filePath.split('\\')[-1]
#filename is USC00110072.txt

fname=pd.DataFrame([fileName]*len(tmp.index))
fname.columns=['File']
# mtemp=pd.concat([])
fname.index=[i for i in range(1985,2015)]
fname

現在,我想連接tmpfname數據幀,以便為我提供這樣的數據:

FileName Year MaxTemp USC00110072.txt 1985 153.347945205 USC00110072.txt 1986 126.963369963 .... ... ......

為此,我使用了pandas.concat([fname,tmp], axis=1)但我得到以下輸出:

              File      MaxTemp
1985    USC00110072.txt   NaN
1986    USC00110072.txt   NaN
1987    USC00110072.txt   NaN
....     ........         ...
1985       NaN          153.347945
1986       NaN          126.963370
1987       NaN          177.602740

請建議我應該在concat函數中進行哪些更改,以便獲得所需的輸出。

問題在於第一個數據幀中的年份是字符串,第二個整數。

因此需要通過astypestring s轉換為integer s:

tmp = (data.replace(to_replace=-9999,value=0)
           .groupby(data.Date.str[0:4].astype(int))
           .mean()
           .to_frame())

還應通過assign具有相同值的新列來簡化解決方案:

df = (data.replace(to_replace=-9999,value=0)
          .groupby(data.Date.str[0:4].astype(int))
          .mean()
          .to_frame()
          .assign(File = fileName))

暫無
暫無

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

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