对于DataFrame的拼接方法
在数据外理时, Dataframe是使用频率非常高的,很多时候我们需要将多个Dataframe进行合并,这时候需要用到Join Append Concat函数,在这里实例简单比较一下区别。
初级应用,暂时没有去设置更复杂的参数,如join key name ignore_index 等
import pandas as pd
合并所有的 index & columns, 但数据清空了
df1 = pd.DataFrame(index=['a','b'], columns=['1a'], data=[0,1])
df2 = pd.DataFrame(columns=['2b','2c'])
df3 = pd.DataFrame(index=['c','b'], columns=['3a'], data=[0,1])
df2 + df1 + df3
1a | 2b | 2c | 3a | |
---|---|---|---|---|
a | NaN | NaN | NaN | NaN |
b | NaN | NaN | NaN | NaN |
c | NaN | NaN | NaN | NaN |
df1 = pd.DataFrame(index=['a','b'], columns=['1a'], data=[0,1])
df2 = pd.DataFrame(index=['a','d'], columns=['2a'], data=[0,1])
print(df1, '\n')
df2
1a a 0 b 1
2a | |
---|---|
a | 0 |
d | 1 |
pd.concat([df1, df2], sort=False) # 纵向拼接(似append),
1a | 2a | |
---|---|---|
a | 0.0 | NaN |
b | 1.0 | NaN |
a | NaN | 0.0 |
d | NaN | 1.0 |
pd.concat([df2, df1], axis=1, sort=True) # 横向表拼接(似join),index重名会被忽略
2a | 1a | |
---|---|---|
a | 0.0 | 0.0 |
b | NaN | 1.0 |
d | 1.0 | NaN |
pd.concat([df1, df2], axis=1, join_axes=[df1.index]) # 横向表拼接(似join),设置join_axes只留下df1, 和join一样了
1a | 2a | |
---|---|---|
a | 0 | 0.0 |
b | 1 | NaN |
df1 = pd.DataFrame(index=['a','b'], columns=['1a'], data=[0,1])
df3 = pd.DataFrame(index=['c'], columns=['3a','3e'], data=[[1,2]])
print(df1,'\n')
df3
1a a 0 b 1
3a | 3e | |
---|---|---|
c | 1 | 2 |
df1.join(df3)
1a | 3a | 3e | |
---|---|---|---|
a | 0 | NaN | NaN |
b | 1 | NaN | NaN |
df3.join(df1)
3a | 3e | 1a | |
---|---|---|---|
c | 1 | 2 | NaN |
df1 = pd.DataFrame(index=['a','b'], columns=['1a'], data=[0,1])
df3 = pd.DataFrame(index=['a','c'], columns=['1a','3a','3e'], data=[[4,3,2],[4,3,2]])
print(df1, '\n')
df3
1a a 0 b 1
1a | 3a | 3e | |
---|---|---|---|
a | 4 | 3 | 2 |
c | 4 | 3 | 2 |
df3.append(df1, sort=True)
1a | 3a | 3e | |
---|---|---|---|
a | 4 | 3.0 | 2.0 |
c | 4 | 3.0 | 2.0 |
a | 0 | NaN | NaN |
b | 1 | NaN | NaN |
df1.append(df3, sort=True)
1a | 3a | 3e | |
---|---|---|---|
a | 0 | NaN | NaN |
b | 1 | NaN | NaN |
a | 4 | 3.0 | 2.0 |
c | 4 | 3.0 | 2.0 |
df1 = pd.DataFrame(index=['a','b'], columns=['1a'], data=[0,1])
df4 = pd.DataFrame(index=['a'], columns=['1a'], data=[9])
print(df1)
df4
1a a 0 b 1
1a | |
---|---|
a | 9 |
df1.update(df4)
df1
1a | |
---|---|
a | 9.0 |
b | 1.0 |
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...