pandas数据加载与合并

本文介绍了如何使用pandas库进行数据加载,包括从文件、URL和文件型对象加载带分隔符的数据,以及如何合并DataFrame,如按键连接和轴向连接,同时也提醒了在合并时需要注意的索引问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《Python for Data Analysis》

数据加载

read_csv

从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号

read_table

从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符(“\t”)

pd.read_csv('ex1.csv')等价于pd.read_table('ex1.csv', sep=',')

to_csv

将数据写到一个以逗号分隔的文件中

合并

pandas.merge

根据一个或多个键将不同DataFrame中的行连接起来。

In [15]: df1 = DataFrame({'key':['b','b','a','c','a','b'],'data1':range(6)})

In [16]: df2 = DataFrame({'key':['a','b','a','b','d'],'data2':range(5)})

In [17]: pd.merge(df1, df2, on='key', how = 'left')
Out[17]:
    data1 key  data2
0       0   b    1.0
1       0   b    3.0
2       1   b    1.0
3       1   b    3.0
4       2   a    0.0
5       2   a    2.0
6       3   c    NaN
7       4   a    0.0
8       4   a    2.0
9       5   b    1.0
10      5   b    3.0

警告: 在进行列-列连接时,DataFrame对象中的索引会被丢弃。(可以将有意义的索引放到列中。)

pandas.concat

可以沿着一条轴将多个对象堆叠到一起。 轴向连接

np.concatenate:

In [19]: arr = np.arange(12).reshape((3,4))

In [20]: arr
Out[20]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

In [21]: np.concatenate([arr,arr], axis=1)
Out[21]:
array([[ 0,  1,  2,  3,  0,  1,  2,  3],
       [ 4,  5,  6,  7,  4,  5,  6,  7],
       [ 8,  9, 10, 11,  8,  9, 10, 11]])

pandas.concat

In [25]: a1 = DataFrame(arr)

In [26]: a1
Out[26]:
   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

In [27]: pd.concat([a1,a1], axis=1)
Out[27]:
   0  1   2   3  0  1   2   3
0  0  1   2   3  0  1   2   3
1  4  5   6   7  4  5   6   7
2  8  9  10  11  8  9  10  11

In [29]: pd.concat([a1,a1], axis=1, ignore_index=True)
Out[29]:
   0  1   2   3  4  5   6   7
0  0  1   2   3  0  1   2   3
1  4  5   6   7  4  5   6   7
2  8  9  10  11  8  9  10  11

axis=1是列,每列是一个向量,沿行传播

combine_first

用参数对象中的数据为调用者对象的缺失数据“打补丁”,并且会进行数据对齐。

In [33]: a = Series([np.nan, 2.5, np.nan, 3.5, 4.5, np.nan], index=['f','e','d','c','b','
    ...: a'])

In [34]: b = Series(np.arange(len(a),dtype=np.float64), index=['f','e','d','c','b','a'])

In [35]: a
Out[35]:
f    NaN
e    2.5
d    NaN
c    3.5
b    4.5
a    NaN
dtype: float64

In [36]: b
Out[36]:
f    0.0
e    1.0
d    2.0
c    3.0
b    4.0
a    5.0
dtype: float64

In [37]: b[:-2]
Out[37]:
f    0.0
e    1.0
d    2.0
c    3.0
dtype: float64

In [39]: a[2:]
Out[39]:
d    NaN
c    3.5
b    4.5
a    NaN
dtype: float64

In [40]: b[:-2].combine_first(a[2:])
Out[40]:
a    NaN
b    4.5
c    3.0
d    2.0
e    1.0
f    0.0
dtype: float64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值