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 数据帧的主要内容,如果未能解决你的问题,请参考以下文章

Python - 如何创建一个空的numpy数组并附加到它,如列表[重复]

在 Numpy Python 中将一维数组附加到二维数组

将一个 numpy 数组附加到一个列表 - 奇怪的事情

将新行附加到 numpy 数组

创建一个基于空的numpy数组并附加现有数组

将多维元素附加到 numpy 数组中而不进行整形