Wanz系列:熊猫系列列表到一个系列(all for one series)

我有一个熊猫系列的字符串列表:

0                           [slim, waist, man]
1                                [slim, waistline]
2                                     [santa]

正如你所看到的,列表因长度而异。我想要一种有效的方法将其折叠成一个系列

0 slim
1 waist
2 man
3 slim
4 waistline
5 santa

我知道我可以使用

series_name.split(' ')

但是我很难把这些字符串放回一个列表中。

谢谢

50

这里有一个只使用 pandas 函数的简单方法:

import pandas as pd
s = pd.Series([
    ['slim', 'waist', 'man'],
    ['slim', 'waistline'],
    ['santa']])

然后

s.apply(pd.Series).stack().reset_index(drop=True)

在某些情况下,您可能希望保存原始索引并添加第二个级别来索引嵌套元素,例如

0  0         slim
   1        waist
   2          man
1  0         slim
   1    waistline
2  0        santa

如果这是您想要的,只需从链中省略.reset_index(drop=True)

42

在熊猫版本0.25.0出现了一个新的方法 '爆炸' 为seriesdataframes。旧版本没有这样的方法。

它有助于建立你需要的结果。

例如,你有这样的系列:

import pandas as pd
s = pd.Series([
    ['slim', 'waist', 'man'],
    ['slim', 'waistline'],
    ['santa']])

然后你可以使用

s.explode()

要得到这样的结果:

0         slim
0        waist
0          man
1         slim
1    waistline
2        santa

在数据帧的情况下:

df = pd.DataFrame({
  's': pd.Series([
    ['slim', 'waist', 'man'],
    ['slim', 'waistline'],
    ['santa']
   ]),
   'a': 1
})

您将有这样的 DataFrame:

                    s  a
0  [slim, waist, man]  1
1   [slim, waistline]  1
2             [santa]  1

s列应用爆炸:

df.explode('s')

会给你这样的结果:

           s  a
0       slim  1
0      waist  1
0        man  1
1       slim  1
1  waistline  1
2      santa  1

如果您的系列包含空列表

import pandas as pd
s = pd.Series([
    ['slim', 'waist', 'man'],
    ['slim', 'waistline'],
    ['santa'],
    []
])

然后运行explode将为空列表引入 NaN 值,如下所示:

0         slim
0        waist
0          man
1         slim
1    waistline
2        santa
3          NaN

如果不需要,可以dropna方法调用:

s.explode().dropna()

要获得此结果:

0         slim
0        waist
0          man
1         slim
1    waistline
2        santa

数据帧也有dropna方法:

df = pd.DataFrame({
  's': pd.Series([
    ['slim', 'waist', 'man'],
    ['slim', 'waistline'],
    ['santa'],
    []
   ]),
   'a': 1
})

在没有 dropna 的情况下运行explode

df.explode('s')

将导致:

           s  a
0       slim  1
0      waist  1
0        man  1
1       slim  1
1  waistline  1
2      santa  1
3        NaN  1

dropna:

df.explode('s').dropna(subset=['s'])

结果:

           s  a
0       slim  1
0      waist  1
0        man  1
1       slim  1
1  waistline  1
2      santa  1
22

你基本上只是试图在这里展平一个嵌套的列表。

您应该能够遍历该系列的元素:

slist =[]
for x in series:
    slist.extend(x)

或更圆滑(但更难理解)列表理解:

slist = [st for row in s for st in row]
16
series_name.sum()

做正是你所需要的。确保它是一系列的列表,否则你的值将被连接(如果字符串)或添加(如果 int)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(987)
数据库技术及其应用:复制 /克隆mongodb数据库及其数据
上一篇
云服务器搭建云电脑:云服务器厂商如何实现云服务器
下一篇

相关推荐

  • spi verilog代码:SPI Verilog代码实现的硬件接口设计

    SPI Verilog代码是一种用来控制和传输数据的串行通信协议,它可以帮助多个设备之间进行高速数据传输。Verilog代码可以用来实现SPI接口,它可以控制SPI总线中的多个设备,并实现数据的发送和接收。下面是一段SPI Verilog代码:…

    2023-08-26 16:14:21
    0 49 13
  • lifestart.syaro网页版Lifestart.syaro网页版

    lifestart.syaro是一个基于Web的轻量级社交网络服务,它提供了一种方便快捷的方式来分享、交流和发布内容。它的核心功能包括:…

    2023-09-16 14:53:15
    0 87 87
  • 怎么让qq皮肤透明:你怎么让剑攻击(how to make sword)

    关于怎么让qq皮肤透明的问题,在how to make sword中经常遇到,你们是怎么进行剑攻的?我问这个问题是因为我不知道如何进行剑攻,而我正在观看的tutorial只显示了射弹攻击。我想学习如何为我正在创建的游戏进行剑攻。这是我正在显示的代码…

    2023-11-09 03:19:53
    0 21 22
  • O jo j:Neo4j O'reilly图书示例

    关于O jo j的问题,在o reilly graph databases中经常遇到,Graph Databases O 'reilly 书中有不工作的不完整的例子。我已经尝试了创建莎士比亚图这是成功的。但是,当我查询我刚刚创建的图表时,查询不识别一些实体。这里是我指的是:…

    2024-04-05 09:51:52
    0 22 71
  • 起重机计算实例:服务器挂起重新启动(pending reboot registry)

    关于起重机计算实例的问题,在pending reboot registry中经常遇到,我正在尝试修改我的 PowerShell 脚本,以找到检查我们服务器上的 Pending Reboots 的最佳可能方法。此脚本检查注册表项。但是,我看到其他 PowerShell 脚本的不一致,并希望获得有关最佳方法的指导。…

    2024-02-10 01:17:37
    0 21 76
  • 3d打印文件:Blender 3D打印

    关于3d打印文件的问题,在blender for 3d printing中经常遇到,我正在尝试从 Blender 创建.stl 文件以 3D 打印。我已经创建了一个创建曲线的脚本。这条曲线我然后旋转并得到一个 tubelike 网格。Blender 中的尺寸是正确的 (和公制)。…

    2024-04-12 06:18:27
    0 20 41
  • 奇迹mu源码:pnorm (q= (x-$\ mu$)/$\ sigma$)是否与pnorm(q=x mean= $\ mu$

    关于奇迹mu源码的问题,在x mu sigma中经常遇到,It is the case that the probability density for a standardized and unstandardized random variable will differ.Eg.,in R…

    2024-03-11 11:37:09
    0 19 74
  • Johnny j:使用 Johnny-five和arduino读取输入引脚

    关于Johnny j的问题,在johnny 5 input中经常遇到,我正在使用 node.js 和 arduino 的应用程序。…

    2024-02-05 11:01:30
    0 83 33

发表评论

登录 后才能评论

评论列表(48条)