【发布时间】:2019-07-09 06:47:12
【问题描述】:
我有 2 个数据帧,长度相同,但大小不同。
基本上,我想通过使用 df1['Data1'] 中的值作为列输入来选择 ref_df 中的值。
您可以在下面看到我的解决方案,但有没有办法在不使用 .ix 或不使用 for 循环的情况下做到这一点?另外,如果我的索引是日期时间索引而不是 ['11','12','13','14'],我该怎么做?
import pandas as pd
import numpy as np
data = {'21' : [1,2,3,4], '22' : [5,6,7,8], '23' : [9,10,11,12], '24' : [13,14,15,16]}
ref_df = pd.DataFrame(data, index=['11','12','13','14'])
df1 = pd.DataFrame({'Data': ['11','12','13','14'],'Data1': ['21','22','23','24']})
for index, row in df1.iterrows():
df1.ix[index, 'Derived'] = ref_df.iloc[ref_df.index.get_loc(row.Data), ref_df.columns.get_loc(row.Data1)]
df1 Data Data1
0 11 21
1 12 22
2 13 23
3 14 24
-----------
ref df 21 22 23 24
11 1 5 9 13
12 2 6 10 14
13 3 7 11 15
14 4 8 12 16
---------
df1 Data Data1 Derived
0 11 21 1.0
1 12 22 6.0
2 13 23 11.0
3 14 24 16.0
----------
【问题讨论】:
标签: python pandas dataframe datetime vlookup