我有一个索引成员的数据帧,它看起来像这样(a,B,C,。。。是公司名称):
df_members
Date 1 2 3 4
0 2016-01-01 A B C D
1 2016-01-02 B C D E
2 2016-01-03 C D E F
3 2016-01-04 F A B C
4 2016-01-05 B C D E
5 2016-01-06 A B C D
我还有第二张表,包括价格:
^{pr2}$目标是将df1中的所有公司名称替换为df_prices中的价格,从而得到df_result:
df_result
Date 1 2 3 4
0 2016-01-01 13 14 15 16
1 2016-01-02 21 22 23 24
2 2016-01-03 29 30 31 32
3 2016-01-04 39 34 35 36
4 2016-01-05 42 43 44 45
5 2016-01-06 48 49 50 51
我已经有一个解决方案,我迭代了df_成员中的所有单元格,查找df_prices中的值,并将它们写入一个新的数据框df_result中。问题是我的数据帧非常大,这个过程大约需要7个小时。
我已经尝试过使用merge/join、map或lookup函数,但它不能解决问题。
我的方法如下:
# Create new dataframes
df_result = pd.DataFrame(columns=df_members.columns, index=unique_dates_list)
# Load prices
df_prices = prices
# Search ticker & write values in new dataframe
for i in range(0,len(df_members)):
for j in range(0,len(df_members.columns)):
if str(df_members.iloc[i, j]) != 'nan' and df_members.iloc[i, j] in df_prices.columns:
df_result.iloc[i, j] = df_prices.iloc[i, df_prices.columns.get_loc(df_members.iloc[i, j])]
问:有没有一种方法可以更有效地映射这些值?
^{} 将执行您需要的操作:
代码:
测试代码:
^{pr2}$结果:
相关问题 更多 >
编程相关推荐