按指数系列为Pandas DataFrame/Series编制索引



我正试图找到一种方法来创建一个基于另一个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]

有关按位置索引的详细信息,请参阅此处。

最新更新