23、pandas的多列拼接成一列函数.str.cat()

23、pandas的多列拼接成一列函数.str.cat(),第1张

在数据处理时,常常需要将某一列进行拆分,分列,这个在之前的文章中已经总结过了,有str.split()、str.extract()、str.replace函数

不过有时候我们不仅仅需要将数据进行拆分,也还需要进行拼接 *** 作。将不要的拆掉,再将需要的拼接上。这个 *** 作在str.replace没法达到预期结果的时候就显得很重要了。

接下来我们就来看看这个函数到底特别在哪个地方:

一、字符串列的合并

如果我们要将location和location_road两列拼接起来,我们可以这么 *** 作:

也就是第一列的名称.str.cat(第二列的名称)。

当然这样处理是不方便我们后续继续 *** 作的,假如我们后续要将合并的这一列拆分开就会比较麻烦了。

所以我们可以在两个合并的列中间加一个分隔符号:

增加参数sep=''就是增加分隔符号,具体的符号可自定义。

二、含有数值列的合并

str.cat()函数使用的前提是两列的内容都是字符串,如果是数值型的话会报错。

这个时候就需要先对整数型的列先做一下转换:

数据类型的转换也可以用:

三、在某列加上某一特定的字符串

如果只是想在某一列上的所以字符串都加上一个相同的字符串要怎么 *** 作呢?

我们先直接在cat()函数当中直接加上我们想要的字符串试试看:

直接加字符串出现了报错:pandas把这样的 *** 作误认为了是sep分隔符号了,然后就出现错误了。

所以我们得先建一列:

然后就可以使用cat()函数进行拼接:

这样就可以把多列进行拼接了,需要注意的是多列拼接的时候需要用中括号把多列括起来。

当然了,以上的这些 *** 作也可以使用自定义函数来完成。

我们在pandas处理数据用groupby分组求和等方法时,需要俩列元素对应的顺序也要相同,但是有时我们需要把元素相同但顺序的相同的俩列合并就不可直接分组求和了,我们既然不考虑顺序了,只考虑元素,那么我们就将其先按一定规则排序换成一样的顺序,再使用groupby分组求和。

2.归纳A类

3.元素换位

这里是核心部分,先将每一行遍历出来,由于遍历出来的是列表,所以我们按列表元素排序,这样我们得到有相同元素的列表,已排序,然后再写入新的csv。

4.分组求和

总结: 当我们受限于字段,而无法对其数据进行处理时,我们想法摘出其数据,处理好后再归入其字段。

.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会使用默认索引(从0到N-1)。

# 引入Series和DataFrame

In [16]: from pandas import Series,DataFrame

In [17]: import pandas as pd

In [18]: ser1 = Series([1,2,3,4])

In [19]: ser1

Out[19]:

01

12

23

34

dtype: int64

1.2 当要生成一个指定索引的Series 时候,可以这样:

# 给index指定一个list

In [23]: ser2 = Series(range(4),index = ["a","b","c","d"])

In [24]: ser2

Out[24]:

a0

b1

c2

d3

dtype: int64

1.3 也可以通过字典来创建Series对象

In [45]: sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}

In [46]: ser3 = Series(sdata)

# 可以发现,用字典创建的Series是按index有序的

In [47]: ser3

Out[47]:

Ohio 35000

Oregon16000

Texas 71000

Utah 5000

dtype: int64

在用字典生成Series的时候,也可以指定索引,当索引中值对应的字典中的值不存在的时候,则此索引的值标记为Missing,NA,并且可以通过函数(pandas.isnull,pandas.notnull)来确定哪些索引对应的值是没有的。

In [48]: states = ['California', 'Ohio', 'Oregon', 'Texas']

In [49]: ser3 = Series(sdata,index = states)

In [50]: ser3

Out[50]:

CaliforniaNaN

Ohio 35000.0

Oregon16000.0

Texas 71000.0

dtype: float64

# 判断哪些值为空

In [51]: pd.isnull(ser3)

Out[51]:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11744763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存