python - 如何将 numpy 数组附加到 pandas 数据帧
Posted
技术标签:
【中文标题】python - 如何将 numpy 数组附加到 pandas 数据帧【英文标题】:python - how to append numpy array to a pandas dataframe 【发布时间】:2017-07-07 23:02:52 【问题描述】:我已经训练了一个逻辑回归分类器来预测评论是正面的还是负面的。现在,我想将predict_proba
-函数返回的预测概率附加到包含评论的 Pandas 数据框中。我尝试做类似的事情:
test_data['prediction'] = sentiment_model.predict_proba(test_matrix)
显然,这是行不通的,因为 predict_proba
返回一个 2D-numpy 数组。那么,最有效的方法是什么?我使用 SciKit-Learn 的 CountVectorizer 创建了test_matrix
:
vectorizer = CountVectorizer(token_pattern=r'\b\w+\b')
train_matrix = vectorizer.fit_transform(train_data['review_clean'].values.astype('U'))
test_matrix = vectorizer.transform(test_data['review_clean'].values.astype('U'))
示例数据如下所示:
| Review | Prediction |
| ------------------------------------------ | ------------------ |
| "Toy was great! Our six-year old loved it!"| 0.986 |
【问题讨论】:
能否提供一个样本数据集(5 - 7 行)? 相关问题:***.com/questions/41904197/… 将预测分配给一个变量,然后从变量中提取要分配给熊猫数据框cols的列。如果x
是带有预测的二维numpy 数组x = sentiment_model.predict_proba(test_matrix)
那么你可以这样做test_data['prediction0'] = x[:,0]
和test_data['prediction1'] = x[:,1]
@KarthikArumugham 非常感谢。它就像一个魅力!我需要加强切片和切块数据;)
@DBE7 我已将其作为答案分享。请将其标记为正确。
【参考方案1】:
将预测分配给一个变量,然后从变量中提取要分配给 pandas 数据框 cols 的列。如果x
是带有预测的二维 numpy 数组,
x = sentiment_model.predict_proba(test_matrix)
那么你就可以了,
test_data['prediction0'] = x[:,0]
test_data['prediction1'] = x[:,1]
【讨论】:
非常有帮助【参考方案2】:import numpy as np
import pandas as pd
df = pd.DataFrame(
np.arange(10).reshape(5, 2), columns=['a', 'b'])
print('df:', df, sep='\n')
arr = np.arange(100, 104).reshape(2, 2)
print('array to append:', arr, sep='\n')
df = df.append(pd.DataFrame(arr, columns=df.columns), ignore_index=True)
print('df:', df, sep='\n')
输出
df:
a b
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
array to append:
[[100 101]
[102 103]]
df:
a b
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
5 100 101
6 102 103
【讨论】:
以上是关于python - 如何将 numpy 数组附加到 pandas 数据帧的主要内容,如果未能解决你的问题,请参考以下文章