lxd*_*ler 20 python axis dataframe pandas
以下面的例子为例:
>>> df1 = pd.DataFrame({"x":[1, 2, 3, 4, 5],
"y":[3, 4, 5, 6, 7]},
index=['a', 'b', 'c', 'd', 'e'])
>>> df2 = pd.DataFrame({"y":[1, 3, 5, 7, 9],
"z":[9, 8, 7, 6, 5]},
index=['b', 'c', 'd', 'e', 'f'])
>>> pd.concat([df1, df2], join='inner')
Run Code Online (Sandbox Code Playgroud)
输出是:
y
a 3
b 4
c 5
d 6
e 7
b 1
c 3
d 5
e 7
f 9
Run Code Online (Sandbox Code Playgroud)
由于axis=0
是列,我认为concat()
只考虑在两个数据帧中找到的列.但是,实际输出会考虑在两个数据帧中找到的行.
axis
参数的确切含义是什么?
Max*_*axU 12
数据:
In [55]: df1
Out[55]:
x y
a 1 3
b 2 4
c 3 5
d 4 6
e 5 7
In [56]: df2
Out[56]:
y z
b 1 9
c 3 8
d 5 7
e 7 6
f 9 5
Run Code Online (Sandbox Code Playgroud)
水平连接(轴= 1),使用在两个DF中找到的索引元素(通过索引进行对齐以进行连接):
In [57]: pd.concat([df1, df2], join='inner', axis=1)
Out[57]:
x y y z
b 2 4 1 9
c 3 5 3 8
d 4 6 5 7
e 5 7 7 6
Run Code Online (Sandbox Code Playgroud)
垂直连接(DEFAULT:axis = 0),使用两个DF中的列:
In [58]: pd.concat([df1, df2], join='inner')
Out[58]:
y
a 3
b 4
c 5
d 6
e 7
b 1
c 3
d 5
e 7
f 9
Run Code Online (Sandbox Code Playgroud)
如果你不使用inner
join方法 - 你会这样:
In [62]: pd.concat([df1, df2])
Out[62]:
x y z
a 1.0 3 NaN
b 2.0 4 NaN
c 3.0 5 NaN
d 4.0 6 NaN
e 5.0 7 NaN
b NaN 1 9.0
c NaN 3 8.0
d NaN 5 7.0
e NaN 7 6.0
f NaN 9 5.0
In [63]: pd.concat([df1, df2], axis=1)
Out[63]:
x y y z
a 1.0 3.0 NaN NaN
b 2.0 4.0 1.0 9.0
c 3.0 5.0 3.0 8.0
d 4.0 6.0 5.0 7.0
e 5.0 7.0 7.0 6.0
f NaN NaN 9.0 5.0
Run Code Online (Sandbox Code Playgroud)
小智 5
这是我使用轴的技巧:只需在脑海中添加操作即可使声音清晰:
如果通过axis = 0"求和",则对所有行求和,输出将是具有相同列数的单行.如果通过axis = 1"求和",则对所有列求和,输出将是具有相同行数的单个列.
归档时间: |
|
查看次数: |
37928 次 |
最近记录: |