Python大熊猫:仅更改具有上一列名称的下一个未命名列

时间:2019-08-29 06:54:27

标签: python pandas

是否有任何方法仅将下一列赋予前一列的下一个未命名列。

输入:

ca~                         ch~     
Campaign Type   Code    Channel Type    Code    Channel Type Definition

输出:

    ca~             ca~     ch~             ch~
    Campaign Type   Code    Channel Type    Code    Channel Type Definition

我在下面尝试过,但它填补了所有空白,尽管我只想在下一列而不是另一个空白处填充

x.columns = x.columns.to_series().mask(lambda y: y.str.startswith('Unnamed')).ffill()

1 个答案:

答案 0 :(得分:2)

样品

             ca~ Unnamed           ch~ Unnamed.1                Unnamed.2
0  Campaign Type    Code  Channel Type      Code  Channel Type Definition

一种方法

df.columns = [df.columns[i-1] if 'Unnamed' in df.columns[i] else df.columns[i] for i in range(len(df.columns))]

             ca~   ca~           ch~   ch~                Unnamed.1
0  Campaign Type  Code  Channel Type  Code  Channel Type Definition

替代

首先用NaN替换“未命名”,然后填写limit = 1

df.columns = list(pd.DataFrame(df.columns).replace('Unnamed\.?\d?',np.nan,regex=True).ffill(limit=1)[0])

    ca~   ca~           ch~   ch~                      NaN
0  Campaign Type  Code  Channel Type  Code  Channel Type Definition