循环遍历 Pandas 数据框中的行并更新对列条件的检查

如何解决循环遍历 Pandas 数据框中的行并更新对列条件的检查

Row_Number A 列 B 列
1 数据 1 A
2 数据A
3 数据B
4 数据 2 B
5 数据C
6 数据D
7 数据E
8 数据 3 C

这是我的数据在另一个表的数据帧上更新的方式,在这个“数据 1”中,有一个延续为“数据 A”和“数据 B”,并且只有一个数据在列 B 上为“A”,但是在数据框中,所有“数据 1”、“数据 A”、“数据 B”都在单独的行中创建。 是否有任何操作可以将所有“Row_number” 1,2,3 连接到一行中,并且在 columnB 中只有“A”的值?

预期输出如下:

Row_Number A 列 B 列
1 数据1、数据A、数据B A
2 数据2、数据C、数据D、数据E B
3 数据3 C

提前致谢

我是 Python 新手,并尝试了以下代码

# variable that stores the values: table_values
import pandas as pd

df=pd.DataFrame(table_values,columns=['ColumnA','ColumnB'])

for index,row in df.iterrows():
  if df.loc[index,'ColumnB'] == '' & df.loc[index,'ColumnA'] != '':
    df.loc[index-1,'ColumnA'] = df.loc[index-1,'ColumnA'] + df.loc[index,'ColumnA']  
print(df)'''

解决方法

您可以在此处执行 groupby。最简单的方法是使用 Column B,因为它已经与您要分组的行相对应。因此,鉴于此数据:

import pandas as pd

df = pd.DataFrame({'ColumnA': ['Data1','DataA','DataB','Data2','DataC','DataD','DataE','Data3'],'ColumnB': ['A',None,'B','C']})

#  ColumnA ColumnB
# 0   Data1       A
# 1   DataA    None
# 2   DataB    None
# 3   Data2       B
# 4   DataC    None
# 5   DataD    None
# 6   DataE    None
# 7   Data3       C

通过填充缺失值来创建要分组的内容:

grouper = df['ColumnB'].ffill()

# 0    A
# 1    A
# 2    A
# 3    B
# 4    B
# 5    B
# 6    B
# 7    C
# Name: ColumnB,dtype: object

然后聚合成concat字符串,遵循this post

output = df['ColumnA'].groupby(grouper).apply(lambda x : ','.join(x)).reset_index()

最终结果:

  ColumnB                     ColumnA
0       A         Data1,DataA,DataB
1       B  Data2,DataC,DataD,DataE
2       C                       Data3

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?