调整Pandas中的数据框列

时间:2018-10-22 03:45:05

标签: python python-3.x pandas list dataframe

我有一个如下所示的数据帧输出:

Index      Region    Date
0       W S CENTRAL  Sep 2018
1               388          
0          MOUNTAIN  Sep 2018
1               229          
0           PACIFIC  Sep 2018
1               145 

我想将每次迭代的数值放在的每个Region下,即:Region下的388,并将其放置在Region列旁边的新列中,该列称为 Total。

数据以.txt格式开始,并作为列表中的列表读入脚本,例如:

[[W S CENTRAL, 388], [MOUNTAIN, 229], [PACIFIC, 145]]

我希望输出为:

Region      Total      Date
WS CENTRAL  388       Sep 2018
MOUNTAIN    229       Sep 2018
PACIFIC     145       Sep 2018

所以我可以对每个区域的日期进行groupby()。

将列表解析为数据框的代码为:

def join_words(n):
    frames = list()

    for listy in n:
        grouper = groupby(listy, key=str.isalpha)
        joins = [[' '.join(v)] if alpha_flag else list(v) for alpha_flag, v in grouper]
        res = list(chain.from_iterable(joins))
        df = pd.DataFrame(res, columns = ['Region'])
        df['Date'] = os.path.split(file)[-1]
        frames.append(df)

    new_df = pd.concat(frames)
    return new_df

将res变量更改为数据帧时会出现此问题;作为res打印为我想要作为输出的列表版本。 石斑鱼和联接变量用于使字符串彼此相邻传递,并将它们联接为单个字符串(出于国家/地区名称的目的)。

1 个答案:

答案 0 :(得分:1)

您可以根据情况使用移位功能。 (查看您的数据框的外观)

df['Total'] = df['Region'].shift(-1)

df = df[df.index %2 == 0]
order = [0,2,1]
df = df[df.columns[order]]