[英]pandas subtract values in two dataframes with identical columns create new dataframe to store result
[英]Access values in a dictionary of dataframes and create a new dataframe with certain columns in pandas
Python 初學者在這里。
每個 dataframe 對應不同的一天:
每天包含 8 列數據,我感興趣 -> ['WINDSPEED_wspd1[m/s]']
我想創建一個新變量(數據框),它只包含有關風速的數據,每天有一列(數據框字典中的每個鍵)
我創建了一個 function 來執行此操作
def get_variables(DictOfDataFrames, ColumnsToPlot, filenames):
for key, df in DictOfDataFrames.items(): # Use magic unpacking to avoid multiple meteo_data[key]-call
x=pd.DataFrame(index=range(0,86400,1),columns=filenames)
if key in filenames:
x[key]=df[ColumnsToPlot[0]][0:86400].copy()
y=pd.DataFrame(DictOfDataFrames[key][ColumnsToPlot[1][0:86399]])
return xy
WindSpeed, WindDirection = get_variables(DATA_Meteo,['WINDSPEED_wspd1[m/s]','WINDDIR_wdir1[deg]'], filenames_Meteo[1:3])
但是,通過這種方式,我在每次迭代中都會覆蓋 y,因此它會返回它在循環中進入的最后一個文件名的值。 另一方面,x 被返回為滿是 NaN。
我試過插入,append,我對這個發瘋了,這應該是超級簡單的編碼。
我建議:
請查找包含 2 天和 2 列數據的示例:
#%% Import lib
import pandas as pd
import numpy as np
#%% Created dummy of random data , one dataframe per day
dataframe1 = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=['WINDSPEED_wspd1[m/s]','temp'])
dataframe2 = pd.DataFrame(np.random.randint(0,100,size=(100, 2)), columns=['WINDSPEED_wspd1[m/s]','temp'])
#created teh dummy dict
dict_d ={"day1":dataframe1 , "day2":dataframe2}
list_of_serie = []
for key, value in dict_d.items():
s = value['WINDSPEED_wspd1[m/s]'] #extract the serie you want
s= s.rename(key) # change the change of teh serie by the day
list_of_serie.append(s) # add in a list of serie
# then concatenate all
df = pd.concat(list_of_serie, axis=1) # concatenate this list of series
print(df)
我終於從另一個因類似問題而失去理智的用戶那里找到了答案。
def get_variables(DictOfDataFrames, ColumnsToPlot, filenames):
first = True
for key, value in DictOfDataFrames.items():
if first:
x = pd.DataFrame(value[ColumnsToPlot[0]])
y = pd.DataFrame(value[ColumnsToPlot[1]])
first = False
else:
x = x.merge(value[ColumnsToPlot[0]], left_index=True, right_index=True)
y = y.merge(value[ColumnsToPlot[1]], left_index=True, right_index=True)
y.columns=DictOfDataFrames.keys()
x.columns=DictOfDataFrames.keys()
return x, y
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.