Pandas copy value from one column to another based on a value third column that is not constant( pandas 根据不是常量的第三列的值将值从一列复制到另一列)
本文介绍了 pandas 根据不是常量的第三列的值将值从一列复制到另一列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个很大的数据集,它是一个巨大的表,实际上应该是许多表。标题隐藏在子集的行中。
我的目标是将这些标题拉出到一个新列中,这样我就可以根据该列进行筛选以获得我想要的数据(一次一个标题)。我为此创建了一个空标题列。在SCORE
列中总是有一系列3个NaN值,其中NAME
列中的第一个值是HEADER
我想要的。因此,我认为这种关系的某些方面可以被利用。
当前 pandas 数据框的结构为:
s = '''HEADER,NAME,SCORE
NaN,Header 1,NaN
NaN,Random Junk,NaN
NaN,Random Junk,NaN
NaN,Ed,98
NaN,Gary,78
NaN,Floyd,89
NaN,Header 2,NaN
NaN,Random Junk,NaN
NaN,Random Junk,NaN
NaN,Mary,96
NaN,Steve,78'''
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO(s))
HEADER NAME SCORE
NaN Header 1 NaN
NaN Random Junk NaN
NaN Random Junk NaN
NaN Ed 98
NaN Gary 78
NaN Floyd 89
... ... ...
NaN Header 2 NaN
NaN Random Junk NaN
NaN Random Junk NaN
NaN Mary 96
NaN Steve 78
我想要这个:
HEADER NAME SCORE
Header 1 Header 1 NaN
Header 1 Random Junk NaN
Header 1 Random Junk NaN
Header 1 Ed 98
Header 1 Gary 78
Header 1 Floyd 89
... ... ...
Header 2 Header 2 NaN
Header 2 Random Junk NaN
Header 2 Random Junk NaN
Header 2 Mary 96
Header 2 Steve 78
这样我就可以删除NaN行,得到我真正想要的东西:
HEADER NAME SCORE
Header 1 Ed 98
Header 1 Gary 78
Header 1 Floyd 89
... ... ...
Header 2 Mary 96
Header 2 Steve 78
经过多次搜索,我想不出如何进行这样的条件编辑。如果您能提供帮助,我们将不胜感激。
推荐答案
SCORE
当SCORE
依次有3个NaN和1个非NaN时,出现标题行,因此:
- 使用
shift
、isna
和notna
检查此条件。 mask
满足此条件时,HEADER
列为NAME
。ffill
(正向填充)新的HEADER
。dropna
基于SCORE
。
is_header = df.SCORE.isna() & df.SCORE.shift(-1).isna() & df.SCORE.shift(-2).isna() & df.SCORE.shift(-3).notna()
df.HEADER = df.HEADER.mask(is_header, df.NAME).ffill()
df = df.dropna(subset=['SCORE'])
# HEADER NAME SCORE
# 3 Header 1 Ed 98.0
# 4 Header 1 Gary 78.0
# 5 Header 1 Floyd 89.0
# 9 Header 2 Mary 96.0
# 10 Header 2 Steve 78.0
这篇关于 pandas 根据不是常量的第三列的值将值从一列复制到另一列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:pandas 根据不是常量的第三列的值将值从一列复制到另一列


基础教程推荐
猜你喜欢
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01