如果有一個 DataFrame 并且我有一個行和列索引列表。我想從索引列表指向的 DataFrame 值中創(chuàng)建一列。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。我可以通過循環(huán)來做到這一點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
提交
取消