[英]Python: extracting arrays from DataFrame column
我正在嘗試從DataFrames中提取數據作為單獨的NumPy數組,以傳遞給SciPy stats方法。
示例數據框:
userId numCol
147 1.3
222 2.6
389 5.7
443 1.2
222 2.4
678 2.1
443 1.8
501 2.1
147 1.2
501 3.2
678 1.3
389 2.4
對於6個唯一的userId,假設我只想為userId的numCol
和443的numCol
值提取4個單獨的數組。
輸出如下所示:
數組名稱147: array([1.3, 1.2)]
數組名稱222: array([2.6, 2.4)]
數組名稱389: array([5.7, 2.4)]
數組名稱443: array([1.2, 1.8)]
我不知道是否最好的方法是創建用戶id就是我想要的清單,然后通過數據幀循環利用大熊貓isin
和NumPy的values
。
我已經仔細研究了這個類似的問題 ,但事實並非如此。
您可以使用類似df[df.userId == 147]
方式獲取與特定userId對應的行。 因此,如果您有所需的userId列表,則可以執行以下操作:
for userId in userIds_to_check:
stats.anderson(df[df.userId == userId].numCol)
(或您想調用的任何函數而不是anderson
)。 注意,通常您不需要獲取普通的numpy數組; 您可以在pandas Series上調用大多數統計信息功能,它們會正常工作。 如果出於某種原因確實希望使用簡單的numpy數組,則可以執行df[df.userId == userId].numCol.values
。
根據您的操作,您可能只想使用groupby
,這將使您可以將函數映射到每個userId組,例如:
>>> df.groupby('userId').numCol.apply(stats.skew)
userId
147 0.000000e+00
222 0.000000e+00
389 3.954380e-16
443 0.000000e+00
501 -1.251190e-15
678 -8.673617e-16
Name: numCol, dtype: float64
在這里,我通過對每個組應用stats.skew
來一次計算每個userId的numCol值的偏度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.