首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于列python的重复行

基于列python的重复行
EN

Stack Overflow用户
提问于 2022-08-30 00:22:27
回答 1查看 76关注 0票数 0

在列、客户和站点中有一些缺失的行。代码可以将相同的值复制到丢失的单元格中,直到另一个单元格有相同值为止。

与我的示例中的例子一样,Customer和site有5个条目,其他列有15个条目,因此代码能够在col客户和站点上填充其他丢失的值,以供参考。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
df= pd.DataFrame()
df.reindex(df.index.repeat(df.a))

输出在红色中是这样的。

EN

回答 1

Stack Overflow用户

发布于 2022-08-30 15:44:21

我包括了一些边缘病例,因为不确定你到底想要什么:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = pd.DataFrame({
    'Customer': ['Sony', 'Samsung', 'Nokia'] + [None]*2 + [None]*4 + ['LG', 'Ford'] + [None]*3,
    'site': ['s1', 's2', 's3'] + [None]*2 + [None]*4 + ['s4', 's5'] + [None]*3,
    'a': ['xy']*3 + ['abc']*2 + ['xyw']*4 + ['rty']*2 + ['zxc']*3,
})
   Customer  site    a
0      Sony    s1   xy
1   Samsung    s2   xy
2     Nokia    s3   xy
3      None  None  abc
4      None  None  abc
5      None  None  xyw
6      None  None  xyw
7      None  None  xyw
8      None  None  xyw
9        LG    s4  rty
10     Ford    s5  rty
11     None  None  zxc
12     None  None  zxc
13     None  None  zxc

我的方法是按组(在示例中为a列)索引数据,并在每个组中索引row_number。然后,您可以通过选择“使用索引”来获得要填充的值。

首先,让我们添加一些助手列并添加索引:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
df['rn'] = df.groupby('a').cumcount()+1
df['a_filled'] = pd.Series(np.where(df.Customer.isnull(), None, df.a)).fillna(method='ffill')
df2 = df.set_index(['a','rn'], drop=False)

a_filled显示要从哪个组获取值以填充缺少的行。

现在,对于每个缺失的行,我们可以引用要填充的正确值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fill_cols = ['Customer', 'site']
cond = lambda x: x.Customer.isnull()
df2.loc[cond, fill_cols] = df2.loc[cond].apply(lambda x: df2.loc[(x.a_filled, x.rn), fill_cols] if (x.a_filled, x.rn) in df2.index else None, axis=1)

       Customer  site    a  rn a_filled
a   rn
xy  1      Sony    s1   xy   1       xy
    2   Samsung    s2   xy   2       xy
    3     Nokia    s3   xy   3       xy
abc 1      Sony    s1  abc   1       xy
    2   Samsung    s2  abc   2       xy
xyw 1      Sony    s1  xyw   1       xy
    2   Samsung    s2  xyw   2       xy
    3     Nokia    s3  xyw   3       xy
    4      None  None  xyw   4       xy
rty 1        LG    s4  rty   1      rty
    2      Ford    s5  rty   2      rty
zxc 1        LG    s4  zxc   1      rty
    2      Ford    s5  zxc   2      rty
    3      None  None  zxc   3      rty

添加if (x.a_filled, x.rn) in df2.index是为了避免使用来自较小组的值填充更大组时的KeyError。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73539264

复制
相关文章
Android在app中实现蓝牙服务Service的案例
在Android应用中,你可以通过服务(Service)来实现蓝牙数据读取。以下是一个简单的示例,演示如何创建一个Android服务以连接到蓝牙设备并读取数据。在实际应用中,你需要确保你的应用具备蓝牙权限,并使用合适的蓝牙库进行连接和数据读取。
丹牛Daniel
2023/10/17
1.2K0
蓝牙在小程序中的应用
leochu2008
2017/10/20
6.1K1
蓝牙在小程序中的应用
Android 蓝牙操作
该BluetoothAdapter可以执行基本的蓝牙任务,例如启动设备发现,查询配对的设备列表,使用已知的MAC地址实例化一个BluetoothDevice类,并创建一个BluetoothServerSocket监听来自其他设备的连接请求
码客说
2019/10/22
1.5K0
android蓝牙测试
注意点:在执行getBondedDevices时候会花费一点时间,一开始我不知道,“已配对”一直没出现,以为出错了。后来上了趟厕所回来发现就有了!!!!尴尬!
提莫队长
2019/02/21
1K0
Android蓝牙开发(三)之蓝牙通信
上篇文章:https://blog.csdn.net/huangliniqng/article/details/82187966
黄林晴
2019/01/10
2.1K0
Android 蓝牙4.0
相对其他传输方式的优势(蓝牙2.1,3.0,wifi): 1,相对wifi和zigbee无线方案,蓝牙和无线射频模块nRF24l01成本会低很多,wifi的好处是可以比较方便实现远程控制,距离比较远,信号也相对比较稳定。 2,健康类的应用有人做出产品的 但不是基于蓝牙4.0低功耗的 还是用蓝牙2.1的spp协议来做的,蓝牙2.1或者3.0的耗电是个比较大的问题,一些小外设,需要用纽扣电池的应用就无法真正使用,对一些创意产品如果需要经常换电池或充电对用户体验都会大打折扣,成本也会大大提高。 3,iPho
用户1733354
2018/05/22
1.3K0
Android蓝牙开发(二)之蓝牙配对和蓝牙连接
上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983
全栈程序员站长
2022/09/07
3.2K0
Android蓝牙开发(二)之蓝牙配对和蓝牙连接
上篇文章:https://blog.csdn.net/huangliniqng/article/details/82185983
黄林晴
2019/01/10
4.4K0
Android 蓝牙开发(2)——低功耗蓝牙
本文章是参考官网,然后加入自己实践中的理解完成!没有看上一篇的读者,可以先阅读一下前一篇,这是一个系列。
开发者
2019/12/26
2.3K0
Android 蓝牙开发,蓝牙连打印机。
1.添加jar包,在app目录下新建libs文件夹,拷入jar文件并Add As Library
yechaoa
2022/06/10
2.8K0
Android 蓝牙开发,蓝牙连打印机。
Android蓝牙详析 | 经典蓝牙通讯架构
AcceptThread函数接收的是一个布尔值secure;
凌川江雪
2019/05/19
2.2K0
Android 蓝牙开发(3)——蓝牙的详细介绍
蓝牙技术最初是由爱立信创制的。技术始于爱立信公司 1994 方案,它是研究在移动电话和其他配件间进行低功耗、低成本无线通信连接的方法。发明者希望为设备间的通讯创造一组统一规则(标准化协议)用来解决用户间相互不兼容的移动电子设备。
开发者
2019/12/26
2.3K0
Android 蓝牙开发(3)——蓝牙的详细介绍
Android 蓝牙开发(1)
Android 平台包含蓝牙网络堆栈支持,凭借此支持,设备能以无线方式与其他蓝牙设备交换数据。应用框架提供了通过 Android Bluetooth API 访问蓝牙功能的途径。使用 Bluetooth API Android 应用可以执行下面的操作:
开发者
2019/12/26
2.5K0
Android 蓝牙操作详解
1.启用蓝牙并使设备处于可发现状态        1.1 在使用BluetoothAdapter类的实例进操作之前,应启用isEnable()方法检查设备是否启用了蓝牙适配器。     // 使用意图提示用户启用蓝牙,并使设备处于可发现状态 private void startBluetooth() {           BluetoothAdapter bt = BluetoothAdapter.getDefaultAdapter(); // 检测蓝牙是否开启 if (!bt.isEnable
hbbliyong
2018/03/06
1.7K0
Android蓝牙开发教程(一)——搜索蓝牙设备[通俗易懂]
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0); 最后的参数设置为0,可以让蓝牙设备一直处于可发现状态。当我们需要设置具体可被发现的时间时,最多只能设置300秒。 i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
全栈程序员站长
2022/09/13
6.4K1
Android蓝牙开发教程(一)——搜索蓝牙设备[通俗易懂]
Android 12 蓝牙适配
  在我的申请下,公司终于购买了一台基于Android12.0的手机,然后我就开心的拿去安装测试了,发现程序崩溃了,于是我这里就写下来,Android12.0的蓝牙适配方法。
晨曦_LLW
2022/04/27
2.1K0
Android 12 蓝牙适配
[Android实例] android 蓝牙开发浅析
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
易寒
2021/12/21
5430
Android蓝牙连接a2dp蓝牙耳机
开发工具:Androidstudio 适配机型:honor8(Android6.0), 坚果R1(Android8.0) 开发功能:Android中蓝牙连接A2DP设备,蓝牙耳机设备
fanfan
2019/07/11
3.1K0
Android蓝牙连接a2dp蓝牙耳机
点击加载更多

相似问题

Android Studio:静态手机预览

131

Android Studio:如何在预览窗口中滚动?

11

JavaFX创建窗格的小活预览

10

Android studio -如何在窗口中显示实现(如文档)

13

android studio预览为空,仅显示手机画面

20
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文