首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas DataFrame .ix方法的行为

Pandas DataFrame .ix方法的行为
EN

Stack Overflow用户
提问于 2016-01-28 15:58:41
回答 1查看 71关注 0票数 0

这里有两个数据帧,我想要连接在一起,列明智。

代码语言:javascript
复制
>>> df1 = pd.DataFrame({'letters' : ['a', 'b', 'c'], 'numbers' : [1, 2, 3]})
>>> df2 = pd.DataFrame({'Cities' : ['Rome', 'Venice'], 'floats' : [1.1 , 2.2]})

>>> df1
  letters  numbers
0       a        1
1       b        2
2       c        3

>>> df2
   Cities  floats
0    Rome     1.1
1  Venice     2.2

行数不匹配。我想附加第二行的副本(可能是任意行),所以我尝试了.

代码语言:javascript
复制
>>> df2.ix[[0, 1, 1]]
   Cities  floats
0    Rome     1.1
1  Venice     2.2
1  Venice     2.2

当连接两个数据帧时,我得到一个ValueError.

代码语言:javascript
复制
pd.concat([df1, df2.ix[[0, 1, 1]]], axis = 1)
ValueError: Shape of passed values is (4, 6), indices imply (4, 4)

我试着用复制的行制作一个新的表副本,但没有结果.

代码语言:javascript
复制
pd.concat([df1, df2.ix[[0, 1, 1]]].copy(), axis = 1)
ValueError: Shape of passed values is (4, 6), indices imply (4, 4)

这是一个人为的理解的例子,而不是一个实际的问题,因为前提是有点傻。我仍然想要一个正确的答案,尽管我希望得到一个预期的结果.

代码语言:javascript
复制
  letters  numbers  Cities  floats
0       a        1    Rome     1.1
1       b        2  Venice     2.2
2       c        3  Venice     2.2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 16:04:18

pd.concat根据DataFrames的索引对行。由于df2.ix[...]有两行具有相同的索引,所以pd.concat不会将第二个“威尼斯”行放在索引2的一行上。要重新编号索引,请在连接之前调用reset_index()

代码语言:javascript
复制
In [102]: pd.concat([df1, df2.iloc[[0, 1, 1]].reset_index()], axis=1)
Out[102]: 
  letters  numbers  index  Cities  floats
0       a        1      0    Rome     1.1
1       b        2      1  Venice     2.2
2       c        3      1  Venice     2.2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35066166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档