我正试图找到一种方法来创建一个基于另一个DataFrame中的值的pandas系列。一个简化的例子是:
df_idx = pd.DataFrame([0, 2, 2, 3, 1, 3])
df_lookup = pd.DataFrame([10.0, 20.0, 30.0, 40.0])
其中,我希望根据df_idx中的索引从df_lookup中生成一个新的panda系列值,即:
df_target = pd.DataFrame([10.0, 30.0, 30.0, 40.0, 20.0, 40.0])
显然,为了提高速度,最好不要循环。
非常感谢您的帮助。
这就是reindex
的用途:
df_idx = pd.DataFrame([0, 2, 2, 3, 1, 3])
df_lookup = pd.DataFrame([10.0, 20.0, 30.0, 40.0])
df_lookup.reindex(df_idx[0])
输出:
0
0
0 10.0
2 30.0
2 30.0
3 40.0
1 20.0
3 40.0
这正是iloc
:的用例
import pandas as pd
df = pd.DataFrame([10.0, 20.0, 30.0, 40.0])
idx_lst = pd.Series([0, 2, 2, 3, 1, 3])
res = df.iloc[idx_lst]
有关按位置索引的详细信息,请参阅此处。