【发布时间】:2019-10-18 06:51:53
【问题描述】:
我想根据我创建的地图 (dictionary) 加入两个特定于数据框的索引。有什么有效的方法来做到这一点?
数据:
df = pd.DataFrame({"a":[10, 34, 24, 40, 56, 44],
"b":[95, 63, 74, 85, 56, 43]})
print(df)
a b
0 10 95
1 34 63
2 24 74
3 40 85
4 56 56
5 44 43
df1 = pd.DataFrame({"c":[1, 2, 3, 4],
"d":[5, 6, 7, 8]})
print(df1)
c d
0 1 5
1 2 6
2 3 7
3 4 8
d = {
(1,0):0.67,
(1,2):0.9,
(2,1):0.2,
(2,3):0.34
(4,0):0.7,
(4,2):0.5
}
所需的输出:
a b c d ratio
0 34 63 1 5 0.67
1 34 63 3 7 0.9
...
5 56 56 3 7 0.5
我能够做到这一点,但是这需要很长时间,因为我的原始数据框的地图有大约 470 万行要映射。我很想知道是否有办法将MERGE、JOIN 或CONCAT 这些数据帧放在不同的索引上。
我的方法:
matched_rows = []
for key in d.keys():
s = df.iloc[key[0]].tolist() + df1.iloc[key[1]].tolist() + [d[key]]
matched_rows.append(s)
df_matched = pd.DataFrame(matched_rows, columns = df.columns.tolist() + df1.columns.tolist() + ['ratio']
非常感谢您的帮助。提前非常感谢。
【问题讨论】:
标签: python-3.x pandas data-structures