我有6个数据框,称为
open_price
,closed_price
,volume
,adj_open_price
,high_price
和low_price
每个数据框都具有这样的值
我知道如何手动进行操作(无需循环或映射)
只需将pd.melt
应用于每个数据框并保持合并结果:
open=pd.melt(open_price,
value_vars=['GOOG','AMZN','APPL','FB','NFLX','SBUX','TSLA'],
var_name='Firm',
value_name='Open',
id_vars=['Firm'])
close=pd.melt(close_price,
value_vars=['GOOG','AMZN','APPL','FB','NFLX','SBUX','TSLA'],
var_name='Firm',
value_name='Close',
id_vars=['Firm'])
openclose = pd.merge(open,close)
,依此类推。
有没有办法使这些重复性任务合而为一?
我还需要将value_name
更改为其各自数据框的名称。
谢谢!
答案 0 :(得分:0)
尝试这样:
将数据框放入列表中,然后将pd.melt与map一起应用。
dfs = [df1, df2]
result=list(map(lambda df:pd.melt(...), dfs))
df_1, df_2 = result
因此,您的情况应该是:
dataframess = [open_price, low_price]
openn=pd.melt(df, value_vars=['GOOG','AMZN','APPL','FB','NFLX','SBUX','TSLA'],\
var_name='Firm', value_name='Open',id_vars=['Firm'])
low=pd.melt(low_price, id_vars=['Date'], value_vars=['GOOG','AMZN','APPL','FB','NFLX','SBUX','TSLA'],\
var_name='Firm', value_name='Low')
result=list(map(lambda x: pd.melt(low_price, id_vars=['Date'], value_vars=['GOOG','AMZN','APPL','FB','NFLX','SBUX','TSLA'],\
var_name='Firm', value_name='x'),dataframess))
您不需要最后一行将map传递到列表中。 因为map返回了一个生成器,您可以通过该生成器进行循环。