假设我有这样一个数据帧:

import pandas as pd
df = pd.DataFrame({"a":["","DATE","01-01-2012"],
                   "b":["","ID",18],
                   "c":["CLASS A","GOLF",3],
                   "d":["","HOCKEY",4],
                   "e":["","BASEBALL",2],
                   "f":["CLASS B","GOLF",15],
                   "g":["","HOCKEY",2],
                   "h":["","BASEBALL",3]
                   })

Out[33]: 
            a   b        c       d         e        f       g         h
0                  CLASS A                    CLASS B                  
1        DATE  ID     GOLF  HOCKEY  BASEBALL     GOLF  HOCKEY  BASEBALL
2  01-01-2012  18        3       4         2       15       2         3

我想将第一行的字符串添加到下面一行的运动名称中,但只能在下一节课开始之前添加.有人知道我怎么能做到这一点吗?

所以结果应该是这样的:

            a   b             c  ...             f               g                 h
0                       CLASS A  ...       CLASS B                                  
1        DATE  ID  CLASS A GOLF  ...  CLASS B GOLF  CLASS B HOCKEY  CLASS B BASEBALL
2  01-01-2012  18             3  ...            15               2                 3

稍后我会将第1行作为我的标题名,但这部分我知道怎么做.我已经try 使用df.iterrow,但我对工作流程感到困惑.

推荐答案

使用replace+ffill转发类,使用布尔掩码将字符串更改boolean indexing:

s = df.loc[0].replace('', np.nan).ffill()
m = s.notna()

df.loc[1, m] = s[m]+' '+df.loc[1, m]

输出:

            a   b             c               d                 e             f               g                 h
0                       CLASS A                                         CLASS B                                  
1        DATE  ID  CLASS A GOLF  CLASS A HOCKEY  CLASS A BASEBALL  CLASS B GOLF  CLASS B HOCKEY  CLASS B BASEBALL
2  01-01-2012  18             3               4                 2            15               2                 3

Side note: it might be better to have those two rows as a MultiIndex rather than rows with strings. This would enable you to benefit from vectorized operations on your numeric data.

Python相关问答推荐

Asyncio与队列的多处理通信-仅运行一个协程

使用子字符串动态更新Python DataFrame中的列

如何使用函数正确索引收件箱?

根据多列和一些条件创建新列

如何在Power Query中按名称和时间总和进行分组

Polars Dataframe:如何按组删除交替行?

替换字符串中的点/逗号,以便可以将其转换为浮动

pyautogui.locateOnScreen在Linux上的工作方式有所不同

从包含数字和单词的文件中读取和获取数据集

如何计算列表列行之间的公共元素

如何才能知道Python中2列表中的巧合.顺序很重要,但当1个失败时,其余的不应该失败或是0巧合

Pythind 11无法弄清楚如何访问tuple元素

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

try 与gemini-pro进行多轮聊天时出错

什么相当于pytorch中的numpy累积ufunc

Mistral模型为不同的输入文本生成相同的嵌入

PyQt5,如何使每个对象的 colored颜色 不同?'

Stacked bar chart from billrame

计算每个IP的平均值

提取相关行的最快方法—pandas