python - 将具有重复索引的系列数据附加到 pandas 数据框列

标签 python pandas numpy dataframe

我有一个名为 result 的系列,其中的数据使用 numpy 重复函数复制了 5 次。

result=np.repeat(rating_df['RESULT'],5)

结果系列看起来像这样,带有重复索引。 results data 我想将结果系列数据添加到 feature_file_df datframe 中的新列

feature_file_df_trans['result']=result

我收到此错误

alueError                                Traceback (most recent call last)
<ipython-input-150-cffb056edf1a> in <module>()
----> 1 feature_file_df_trans['result']=result

/home/jayashree/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in __setitem__(self, key, value)
   2427         else:
   2428             # set column
-> 2429             self._set_item(key, value)
   2430 
   2431     def _setitem_slice(self, key, value):

/home/jayashree/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in _set_item(self, key, value)
   2493 
   2494         self._ensure_valid_index(value)
-> 2495         value = self._sanitize_column(key, value)
   2496         NDFrame._set_item(self, key, value)
   2497 

/home/jayashree/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in _sanitize_column(self, key, value, broadcast)
   2643 
   2644         if isinstance(value, Series):
-> 2645             value = reindexer(value)
   2646 
   2647         elif isinstance(value, DataFrame):

/home/jayashree/anaconda2/lib/python2.7/site-packages/pandas/core/frame.pyc in reindexer(value)
   2635                     # duplicate axis
   2636                     if not value.index.is_unique:
-> 2637                         raise e
   2638 
   2639                     # other

ValueError: cannot reindex from a duplicate axis

如何将列添加到如下所示的数据框中 resultant dataframe

最佳答案

我认为您可以将Series转换为,然后添加到列numpy array:

注意 - 需要与追加列相同长度的输出 numpy 数组

feature_file_df_trans['result']=np.repeat(rating_df['RESULT'].values,5)

示例:

rating_df = pd.DataFrame({'RESULT':[1,2,3]})
feature_file_df_trans = pd.DataFrame({'a':range(15)})

feature_file_df_trans['result']=np.repeat(rating_df['RESULT'].values,5)
print (feature_file_df_trans)
     a  result
0    0       1
1    1       1
2    2       1
3    3       1
4    4       1
5    5       2
6    6       2
7    7       2
8    8       2
9    9       2
10  10       3
11  11       3
12  12       3
13  13       3
14  14       3

如果长度不同,则需要获取每个长度的最小值并在 Series 构造函数中按其过滤:

rating_df = pd.DataFrame({'RESULT':[1,2,3,5,6,7]})
feature_file_df_trans = pd.DataFrame({'a':range(15)}, index = range(3, 18))

result = np.repeat(rating_df['RESULT'].values,5)
len1 = len(feature_file_df_trans.index)
print (len1)
15
len2 = len(result)
print (len2)
30
len_min = min(len1, len2)

feature_file_df_trans['result'] = pd.Series(result[:len_min], 
                                            index=feature_file_df_trans.index[:len_min])
print (feature_file_df_trans)
     a  result
3    0       1
4    1       1
5    2       1
6    3       1
7    4       1
8    5       2
9    6       2
10   7       2
11   8       2
12   9       2
13  10       3
14  11       3
15  12       3
16  13       3
17  14       3
<小时/>
rating_df = pd.DataFrame({'RESULT':[1,2]})
feature_file_df_trans = pd.DataFrame({'a':range(15)})

result = np.repeat(rating_df['RESULT'].values,5)
len1 = len(feature_file_df_trans.index)
print (len1)
15
len2 = len(result)
print (len2)
10
len_min = min(len1, len2)

feature_file_df_trans['result'] = pd.Series(result[:len_min], 
                                            index=feature_file_df_trans.index[:len_min])
print (feature_file_df_trans)
     a  result
0    0     1.0
1    1     1.0
2    2     1.0
3    3     1.0
4    4     1.0
5    5     2.0
6    6     2.0
7    7     2.0
8    8     2.0
9    9     2.0
10  10     NaN
11  11     NaN
12  12     NaN
13  13     NaN
14  14     NaN

关于python - 将具有重复索引的系列数据附加到 pandas 数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46462546/

相关文章:

python - Pandas groupby 获取两个聚合函数,然后转换为列表列表

python - np.genfromtxt 多个分隔符?

python - 从 Ruby 客户端访问 Python XML-RPC 服务

python - pandas:如何按多列分组并对多列执行不同的聚合?

python - 如何定义将在 python 类中函数的每次迭代中使用的变量?

python - 如何根据条件更改 2d numpy 数组的元素

python - 我们可以将向量更改为 numpy 中的矩阵,向量中的元素在具有 m*n 维度的矩阵中重复

python - sklearn KMedoids 返回空集群

Python dataframe 将点击路径行转为列

python - 如何在python中显示数组的百分比