乘以行并按单元格值附加到数据框

2024-05-29

考虑以下数据框;

df = pd.DataFrame(
          {'X':('a','b','c','d'),
           'Y':('a','b','d','e'),
           'Z':('a','b','c','d'),
           '#':(1,2,1,3)
                })
df

我想在“#”列中附加数字大于 1 的行,并在该行中的数字减 1。 df 最好应该 然后看起来像这样;

或者它可能看起来像这样(行完全相乘);

顺便说一句,我已经广泛搜索了这个问题,但找不到任何可以帮助我朝正确方向发展的东西。


Use numpy.repeat https://docs.scipy.org/doc/numpy/reference/generated/numpy.repeat.html:

c = df.columns[1:]
df = pd.DataFrame(np.repeat(df.values, df['#'], axis=0)[:, 1:], columns=c)
print (df)
   X  Y  Z
0  a  a  a
1  b  b  b
2  b  b  b
3  c  d  c
4  d  e  d
5  d  e  d
6  d  e  d

Similar:

df = pd.DataFrame(np.repeat(df.values, df['#'], axis=0), columns=df.columns)
print (df)
   #  X  Y  Z
0  1  a  a  a
1  2  b  b  b
2  2  b  b  b
3  1  c  d  c
4  3  d  e  d
5  3  d  e  d
6  3  d  e  d

但如果顺序很重要:

dfs = []
for i in range(df['#'].max()):
    df = df[df['#'] > 0].copy()
    df['#'] -= 1
    dfs.append(df.iloc[:, 1:])

df1 = pd.concat(dfs, ignore_index=True) 
print (df1)
   X  Y  Z
0  a  a  a
1  b  b  b
2  c  d  c
3  d  e  d
4  b  b  b
5  d  e  d
6  d  e  d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

乘以行并按单元格值附加到数据框 的相关文章

随机推荐

  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 如何控制 Paypal Sandbox 中显示的语言?

    我正在使用 Paypal Express Checkout 测试我的网站支付解决方案 但每当客户进入 PayPal 支付页面 在 paypal 沙箱中 时 该页面都会以英文显示 如何控制显示的语言 在我的网站上 我有一个语言选择器 因此我可
  • ElasticSearch 和 PHP 中的多个字段搜索

    我正在使用最新版本弹性搜索 PHP https github com elasticsearch elasticsearch php以及最新版本的 MongoDB 和 ElasticSearch 我需要对可以包含一个或多个值的多个字段进行搜
  • 渐进式网络应用程序中地址栏中显示的网址

    我们正在开发渐进式网络应用程序 在 Android 手机中 我们在地址中看到 url 如下所示 在此输入图像描述 https i stack imgur com 2jKQ3 png 我们在 Manifest json 中采取的步骤 disp
  • 将 bash 提示符下的当前命令复制到剪贴板

    我想要一个快速的键盘命令序列 将 bash 提示符处的当前命令复制到剪贴板 例如 要将最后一个 bash 命令复制到剪贴板 我会按 up some command sequence 复制它 或者 例如 要在 bash 历史记录中搜索命令 我
  • 如果输入重复,则覆盖 Google 表格(用于表单响应)行

    因此 我一直在尝试找出如何阻止谷歌表单中的谷歌表格响应输出中出现重复的行 如果找到这个链接 听起来它正是我想要的 表单 Google 脚本防止重复 https stackoverflow com questions 16965687 for
  • 验证 LDAPS 连接的自签名证书

    我想从 Linux Linux 3 2 0 4 amd64 1 SMP Debian 3 2 51 1 x86 64 GNU Linux 客户端到 Windows 2012 服务器建立安全的 ldap 连接 ldaps 以更改活动中的用户密
  • django-admin.py makemessages 不起作用

    我正在尝试翻译一个字符串 load i18n trans Well Hello there how are you to Hola amigo que tal 我的 settings py 文件有这样的内容 LOCALE PATHS os
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 多维数组 PHP 内爆 [重复]

    这个问题在这里已经有答案了 就我的数据结构而言 我有一个 communications 数组 每个 communications id 本身包含三部分信息 id score 和 content 我想内爆这个数组以获得逗号分隔的 id 列表
  • 如果未安装 Java,您是否可以免受 log4j CVE-2021-44228 的影响?

    我已经阅读了很多关于这个问题有多严重的内容 并了解了在我们公司正在生成的代码中找到它的可用选项 并更新了使用易受攻击版本的服务器 我无法找到的是特定服务器是否未安装 Java 即如果我以 root 身份登录并运行java version并得
  • .removeClass 从所有元素(相对于单个定义的元素)

    我将如何使用 removeClass 删除所有匹配的类 而不是单独调用每个元素 所以代替这个 input removeClass CO form alert select removeClass CO form alert input se
  • 从 Context Provider 重定向 React Router

    我是 React Router 的新手 并尝试使用新的 Conext API 从提供程序内部进行重定向 基本上我的提供者看起来像这样 AuthContext js class AuthProvider extends React Compo
  • AngularJS + jQuery 移动

    是否还有其他可能性来设计AngularJS以移动友好的方式应用程序CSS 我正在计划一个移动应用程序 并希望使用 AngularJS 进行逻辑和数据绑定 但我不想自己设计所有内容CSS The AngularJSFAQ说它使用jQuery
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • Flink 窗口:聚合并输出到接收器

    我们有一个数据流 其中每个元素都是这种类型 id String type Type amount Integer 我们想要聚合这个流并输出总和amount每周一次 目前的解决方案 Flink 管道示例如下所示 stream keyBy ty
  • Celery 广播 vs RabbitMQ 扇出

    我最近一直在使用 Celery 但我不喜欢它 它的配置很混乱 过于复杂并且文档记录很少 我想用 Celery 从单个生产者向多个消费者发送广播消息 让我困惑的是 Celery 术语和底层传输 RabbitMQ 术语之间的差异 在 Rabbi
  • 乘以行并按单元格值附加到数据框

    考虑以下数据框 df pd DataFrame X a b c d Y a b d e Z a b c d 1 2 1 3 df 我想在 列中附加数字大于 1 的行 并在该行中的数字减 1 df 最好应该 然后看起来像这样 或者它可能看起来