【python】将单元格中的多个数据拆分为多行数据(explode方法使用) |
您所在的位置:网站首页 › 怎么把一列数分开 › 【python】将单元格中的多个数据拆分为多行数据(explode方法使用) |
单元格多数据拆分
1. 背景与需求2. 问题解决2.1 官方示例2.2 实际操作2.2.1 采坑2.2.2 问题纠错
3. 问题解决4. 小结
1. 背景与需求
在处理数据中,往往需要做多维特征提取(一对多),如下: 这里需要使用pandas中的explode方法,注意此方法是在0.25.0版本之后才有,所以确认当前的pandas版本是在此之上,查看某个库的版本可以使用如下代码 import pandas print(pandas.__version__) 0.25.3 #当前的版本 2.1 官方示例df.explode() 方法的使用代码如下: import pandas as pd df = pd.DataFrame({'A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1}) print(df) print(df.explode('A'))→ 输出的结果为:(会将一列的单元格数据进行拆分,注意数据的格式:列表里面多个元素) A B 0 [1, 2, 3] 1 1 foo 1 2 [] 1 3 [3, 4] 1 A B 0 1 1 0 2 1 0 3 1 1 foo 1 2 NaN 1 3 3 1 3 4 1 2.2 实际操作首先导入库,进行文件数据的读取 import pandas as pd data = pd.read_excel('data_ok.xlsx') data.head(10)→ 输出的结果为:(文件数据导入成功) 观察官方给出的示例,为了确保数据的格式一样,先把格式化为统一,因此就对‘企业画像’这个字段进行数据处理 data['企业画像'] = data['企业画像'].apply(lambda x:[x.replace('、',', ')]) data.head(10)→ 输出的结果为:(在jupyter notebook里面这里看上去是和官方是一致的) 碰巧的是我在spyder里面运行相同的代码,然后在调试的过程中,发现中间进行目标格式转化时,spyder的变量查看器里的数据格式是和jupyter notebook中不一样(列表里面只有一个元素)。当执行完数据格式转化之后,spyder中的数据如下 还是修改‘企业画像’中单元格的数据格式,这次应该是将数据转为一个一个的元素,然后是列表的形式,就可以使用split方法,代码及输出结果如下: 在jupyter notebook中执行代码如下: 官方示例给的demo很是简洁,但是在实际操作的过程中数据并没有那么简单,而且在编程敲代码中不要只习惯用一种编辑器,因为没有一种编辑器可以说是非常完美的,都存在优缺点,根据具体的需要选择相应的编辑器即可 切记:敲代码的初衷是解决问题,使得问题简单化而不是复杂化 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |