我有一个如下所示的数据帧输出:
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打印为我想要作为输出的列表版本。 石斑鱼和联接变量用于使字符串彼此相邻传递,并将它们联接为单个字符串(出于国家/地区名称的目的)。
答案 0 :(得分:1)
您可以根据情况使用移位功能。 (查看您的数据框的外观)
df['Total'] = df['Region'].shift(-1)
df = df[df.index %2 == 0]
order = [0,2,1]
df = df[df.columns[order]]