簡體   English   中英

熊貓DataFrame .ix方法的行為

[英]Behavior of Pandas DataFrame .ix method

這是我想按列匯總的2個數據幀。

>>> 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

行數不匹配。 我想追加第二行的副本(可以是任意行),所以我嘗試了...

>>> df2.ix[[0, 1, 1]]
   Cities  floats
0    Rome     1.1
1  Venice     2.2
1  Venice     2.2

整理2個數據框時,出現ValueError ...

pd.concat([df1, df2.ix[[0, 1, 1]]], axis = 1)
ValueError: Shape of passed values is (4, 6), indices imply (4, 4)

我嘗試用復制行創建表的新副本而無濟於事...

pd.concat([df1, df2.ix[[0, 1, 1]]].copy(), axis = 1)
ValueError: Shape of passed values is (4, 6), indices imply (4, 4)

因為前提有點愚蠢,所以這比實際問題更像是一個人為的理解例子。 我仍然希望得到一個適當的答案,盡管預期結果是...

  letters  numbers  Cities  floats
0       a        1    Rome     1.1
1       b        2  Venice     2.2
2       c        3  Venice     2.2

pd.concat根據pd.concat的索引對齊行。 由於df2.ix[...]具有具有相同索引的兩行,因此pd.concat不會將第二個“威尼斯”行放在具有索引2的行上。要重新編號索引,請在連接之前調用reset_index()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM