pandas实现一行拆分成多行
作者:Jalen备忘录 时间:2021-09-19 16:22:37
一行拆分成多行
1.根据某一列拆分
效果:
代码:
if __name__ == '__main__':
import pandas as pd
df = pd.DataFrame({'Country': ['China,US', 'Japan,EU', 'UK,Australia', 'Singapore,Netherland'],
'Number': [100, 150, 120, 90],
'Value': [1, 2, 3, 4],
'label': list('abcd')})
df_split_row = df.drop('Country', axis=1).join(
df['Country'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('Country'))
2.根据多列拆分
效果:
代码:
if __name__ == '__main__':
import pandas as pd
df = pd.DataFrame({'Code': ['212027'],
'Color': ['blue, pink, yellow'],
'Size': ['12-18M, 2-3Y, 3-4Y']})
split_columns = ['Color', 'Size']
df_convert = df.drop(columns=split_columns, axis=1)
for column in split_columns:
df_convert = df_convert.join(
df[column].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename(column))
df_convert = df_convert.reset_index(drop=True)
一行转多行、多行转一行
1.测试数据
df = pd.DataFrame([['张世龙', '篮球、羽毛球、英雄联盟'],
['黄邵飞', '兵乓球、足球、下棋'],
['刘苗苗', '绘画、写小说、跑步']])
df.columns = ['姓名','爱好']
2.一行转多行
方法一:
# 1、把渠道字段拆分,分为多列; 2、把行转列成列;3、重置索引,并删除多于的索引;4、更改名称
df_ = df['爱好'].str.split('、',expand=True).stack().reset_index(level=1,drop=True).rename('爱好')
df1 = df.drop(['爱好'], axis=1).join(df_)
方发二:
# 1、将渠道字段拆分;2、调用explode()方法
df['爱好'] = df['爱好'].map(lambda x:x.split('、'))
df1 = df.explode('爱好')
3.多行转一行
#定义拼接函数,并对字段进行去重
def concat_func(x):
return pd.Series({
'爱好':'、'.join(x['爱好'].unique())
})
#分组聚合 + 拼接
df2 = df1.groupby(df1['姓名']).apply(concat_func).reset_index()
来源:https://blog.csdn.net/baidu_30809315/article/details/93748732
标签:pandas,一行,拆分,多行
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python接入使用百度翻译流程
2022-11-26 01:01:43
![](https://img.aspxhome.com/file/2023/1/71571_0s.png)
button标签的type属性默认值是?
2010-08-16 12:33:00
分享整理的12条sql语句连同数据
2012-07-11 16:14:59
Python读取csv文件实例解析
2023-01-21 07:47:32
![](https://img.aspxhome.com/file/2023/8/68408_0s.png)
Python 正则表达式详解
2021-12-03 11:11:38
![](https://img.aspxhome.com/file/2023/0/84950_0s.jpg)
在pandas多重索引multiIndex中选定指定索引的行方法
2023-07-07 22:04:16
![](https://img.aspxhome.com/file/2023/6/62596_0s.jpg)
SQL Server数据库优化经验总结
2009-03-16 14:22:00
python循环监控远程端口的方法
2023-08-07 14:53:22
Python实现公历(阳历)转农历(阴历)的方法示例
2021-08-02 09:54:44
![](https://img.aspxhome.com/file/2023/0/77750_0s.png)
MySQL 视图,第1349号错误
2008-05-18 13:04:00
Python函数关键字参数及用法详解
2023-08-13 00:34:06
全透视:CSS Z-index 属性
2009-09-21 12:52:00
![](https://img.aspxhome.com/file/UploadPic/up/2009092113092072.gif)
python使用opencv实现马赛克效果示例
2022-10-16 04:23:30
![](https://img.aspxhome.com/file/2023/8/67908_0s.jpg)
小议sqlserver数据库主键选取策略
2011-10-24 19:51:30
Access秘密技巧和陷阱
2008-04-12 14:55:00
python读取查看npz/npy文件数据以及数据完全显示方法实例
2022-05-15 15:45:36
![](https://img.aspxhome.com/file/2023/3/79643_0s.png)
python获取对象信息的实例详解
2022-04-30 14:55:50
php-fpm报502问题的解决办法
2023-10-12 04:12:23
![](https://img.aspxhome.com/file/2023/7/55667_0s.png)
如何在一个广告旗帜里轮番显示时间长度不一的不同广告?
2010-06-26 12:35:00
实现文字放大效果Javascript源码
2010-03-17 20:46:00
![](https://img.aspxhome.com/file/UploadPic/20103/17/2010317204821421s.jpg)