pandas 将单元格是列表的DataFrame拆成多列

方法:

pd.DataFrame(df[col].values.tolist()) 将单元格元素是列表的列拆成多列

如果要与原来的其他列合并

pd.concat([pd.DataFrame(df[col].values.tolist()), df[其他列]], axis=1)

示例:
points数组如下:
在这里插入图片描述
在这里插入图片描述
生成DataFrame如下
在这里插入图片描述
处理结果为:
在这里插入图片描述
解释:

1、df[col].values.tolist() 解释,本例中 col=0。生成一个 df[col].values numpy矩阵,让后用tolist()转化为列表。
在这里插入图片描述
2、pd.DataFrame(列表)创造一个.DataFrame。列表中每个元素是DataFrame的按行排列的元素,即第n个元素放在第n行的0列。由于元素是数组,数组在生成DataFrame时会自动分列。

3、如果使用 df_i.replace(“NaN”, “”,inplace=True)替换NaN为空字符串,则又会变成列表。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用[1]: 二、一拆分两 df[['a','b']] = df.row.str.split(' ', expand = True) df.drop(axis = 1, columns = 'row', inplace = True) split expand:这个参数直接将分后的结果转换成 DataFrame drop axis 是指处哪一个轴columns 是指某一或者多列inplaces 是否替换原来的 dataframe 。 引用[3]:dataframe拆分为多列,一行拆分为多行 import pandas as pd df = pd.DataFrame([['a1','a2', 'a3_a4'], ['b4', 'b5', 'b6_b7']],columns=['A','B','C']) abc0a1a2a3_a41b4b5b6_b7 1.一拆分为多列 使用指定分隔符,将一分隔为多列 import pandas as pd df = pd.DataFrame([['a1','a2', 'a3_a4'], ['b4', 'b5', 'b6_b7']],columns=['A','B','C']) df_1 = df['C'].str.split('_') print(df_1) df_2 =df['C'].str.split('_',expand=True) print(df_2) # 删除表格df的C,然后和分的结果df_2拼接 df_3 = df.drop(['C'],axis=1).join(df_2) print(df_3) str.split不使用expand参数,返回列表;使用expand参数,返回列表拆分为 输出: 表格df_1 0[a3,a4]1[b6,b7] 表格df_2 010a3a41b6b7 表格df_3 AB010a1a2a3a41b4b5b6b7 问题: dataframe 回答: 要将DataFrame的一拆分为多列,可以使用str.split()方法。例如,使用指定的分隔符将一拆分为多列,可以使用以下代码: df_1 = df['C'].str.split('_') df_2 = df['C'].str.split('_', expand=True) df_3 = df.drop(['C'], axis=1).join(df_2) 其中,df_1是将C拆分为列表的结果,df_2是将C拆分为多列的结果,df_3是将C删除后与df_2拼接的结果。[1] 另外,如果要将DataFrame的一行拆分为多行,可以使用explode()方法。例如,使用explode()方法将C的元素拆分为多行,可以使用以下代码: df['C'] = df['C'].apply(lambda x: x.split('_')) df = df.explode('C') 这样就可以将C的元素拆分为多行。[3]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiongsheng666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值