[英]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.