没有合适的资源?快使用搜索试试~ 我知道了~
首页Python pandas 列转行操作详解(类似hive中explode方法)
资源详情
资源评论
资源推荐

Python pandas 列转行操作详解列转行操作详解(类似类似hive中中explode方法方法)
主要介绍了Python pandas 列转行操作详解(类似hive中explode方法),具有很好的参考价值,希望对大家有所
帮助。一起跟随小编过来看看吧
最近在工作上用到Python的pandas库来处理excel文件,遇到列转行的问题。找了一番资料后成功了,记录一下。
1. 如果需要爆炸的只有一列:如果需要爆炸的只有一列:
df=pd.DataFrame({'A':[1,2],'B':[[1,2],[1,2]]})
df
Out[1]:
A B
0 1 [1, 2]
1 2 [1, 2]
如果要爆炸B这一列,可以直接用explode方法(前提是你的pandas的版本要高于或等于0.25)
df.explode('B')
A B
0 1 1
1 1 2
2 2 1
3 2 2
2. 如果需要爆炸的有如果需要爆炸的有2列及以上列及以上
df=pd.DataFrame({'A':[1,2],'B':[[1,2],[3,4]],'C':[[1,2],[3,4]]})
df
Out[592]:
A B C
0 1 [1, 2] [1, 2]
1 2 [3, 4] [3, 4]
则可以用写一个方法,如下代码:
def unnesting(df, explode):
idx = df.index.repeat(df[explode[0]].str.len())
df1 = pd.concat([
pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1)
df1.index = idx
return df1.join(df.drop(explode, 1), how='left')
unnesting(df,['B','C'])
Out[2]:
B C A
0 1 1 1
0 2 2 1
1 3 3 2
1 4 4 2
补充知识:补充知识:pandas:一列分解成多列一列分解成多列 series.str.split(',',expand=True);pyspark 一列分解成多列一列分解成多列
源源shuju
question_id id
0 17576 70391,70394
1 17576 70391,70392,70393,70394
2 17576 70391,70392
3 40430 155032,155033,155034
4 40430 155032,155033,155034,155035
5 40430 155033,155034,155035
6 40430 155032,155035
7 40430 155034,155035
8 40430 155032,155034
9 40430 155032,155034,155035
10 40430 155033,155034
11 40430 155032,155033
12 40430 155033,155035
13 40430 155032,155033,155035
pandas solution
df.join(df['id'].str.split(',',expand=True)














安全验证
文档复制为VIP权益,开通VIP直接复制

评论0