如何解决循环遍历 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 举报,一经查实,本站将立刻删除。