从索引列表创建 pandas DataFrame 列

如果有一个 DataFrame 并且我有一个行和列索引列表。我想从索引列表指向的 DataFrame 值中创建一列。


df=pd.DataFrame([[0,1,0],[3,0,0],[4,0,1]])

row_ind=[0,1,2]

col_ind=[1,0,0]

所以在这种情况下,我想获得一个新的 DataFrame,它包含值 1、3、4。我可以通过循环来做到这一点zip(row_ind, col_ind),然后在每次迭代中访问一个 DataFrame 单元并将其添加到我的新数据中。


有没有更好的选择,单线?类似的东西df.iloc[row_ind,col_ind](这会返回整个数据帧,但我只想要新数据帧中的单个值)。


手掌心
浏览 98回答 3
3回答

茅侃侃

使用熊猫的查找:df.lookup(row_ind,col_ind)array([1, 3, 4], dtype=int64)您可以将其作为单列数据框传回...使用pd.DataFrame()

鸿蒙传说

使用numpy的精美索引:import pandas as pddf = pd.DataFrame([[0, 1, 0], [3, 0, 0], [4, 0, 1]])row_ind = [0, 1, 2]col_ind = [1, 0, 0]series = pd.Series(df.to_numpy()[row_ind, col_ind])

慕侠2389804

一个简单的方法是这样使用df.values:import pandas as pddf = pd.DataFrame([[0, 1, 0], [3, 0, 0], [4, 0, 1]])row_ind = [0, 1, 2]col_ind = [1, 0, 0]result = [df.values[row_ind[i], col_ind[i]] for i in range(len(row_ind))]print(result)返回[1, 3, 4]如果你真的想要它在另一个数据框中,只需添加df2 = pd.DataFrame(result)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python