我有一個Pandas Dataframe df和一個相同大小的numpy陣列ar。我可以像這樣從df中提取行:
subdf = df[df['column'] == value)
但是,我如何從ar中提取相應的行,即具有相同索引的行?
在我的例子中,df也是一個更大的Dataframe的子集,這意味著df.index不是一個連續的整數集。
uj5u.com熱心網友回復:
你可以使用:
df = pd. DataFrame({'value': [1,2,3,2, 1]})
ar = np.array([10,20,30,20,10] )
ar[df['value'] == 2]
輸出:
array([20, 20] )
或者,如果你有更高的維度:
ar = np.range(20).reshape(4,5)
ar[:, df['value'] == 2]
輸入:
array([[ 0, 1, 2, 3, 4] 。
[5, 6, 7, 8, 9] 。
[10, 11, 12, 13, 14] 。
[15, 16, 17, 18, 19] ])
輸出:
array([[1, 3]。
[6, 8] 。
[11, 13] 。
[16, 18]])
uj5u.com熱心網友回復:
不是很清楚,但讓我們做一個嘗試
import pandas as pd
df = pd.DataFrame({
'Date': ['2021-09-14','2021-09-14','2021-09-14', '2021-09-13','2021-09-12','2021-09-12','2021-09-11'],
'Date_Yesterday': ['2021-09-13','2021-09-13','2021-09-13', '2021-09-12','2021-09-11','2021-09-11','2021-09-10'],
'Clicks': [100,100,100。 50,10,10, 1]
})
df
array=df['Clicks'].values# Array。
s=df.loc[3:4, 'Clicks'].index# define dataframe index range.
或者
s=df['Clicks'].isin([50, 10] )
array[np.r_[s]]#array slice based on df。
uj5u.com熱心網友回復:
有幾種方法可以做到這一點。給定陣列和資料框架:
import numpy as np
import pandas as pd。
arr = np. array(([21, 22, 23], [11, 22, 33], [21, 77, 89] )
df = pd.DataFrame(data=arr, columns=['c1'/span>, 'c2'/span>, 'c3'/span>] )
如果你從資料框架中提取行,你可以使用該子資料框架的索引來從numpy陣列中獲取相應的行。
df2 = df[df['c1'] == 21]
arr1 = arr[df2.index] 。
print(arr1)
輸出:
[[21 22 23]
[21 77 89 ]]
你也可以直接使用獲取子資料框架的相同語法來獲取陣列中的行。
arr2 = arr[df['c2'] == 21]
print(arr2)
輸出:
[[21 22 23]
[21 77 89 ]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/324009.html
標籤:
