[英]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
現在,我想連接tmp和fname數據幀,以便為我提供這樣的數據:
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函數中進行哪些更改,以便獲得所需的輸出。
問題在於第一個數據幀中的年份是字符串,第二個整數。
因此需要通過astype
將string
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.