如果有一个 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](这会返回整个数据帧,但我只想要新数据帧中的单个值)。
3 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
使用熊猫的查找:
df.lookup(row_ind,col_ind)
array([1, 3, 4], dtype=int64)
您可以将其作为单列数据框传回...使用pd.DataFrame()
鸿蒙传说
TA贡献1865条经验 获得超7个赞
使用numpy的精美索引:
import pandas as pd
df = 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
TA贡献1719条经验 获得超6个赞
一个简单的方法是这样使用df.values:
import pandas as pd
df = 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)
添加回答
举报
0/150
提交
取消