[英]Adjusting dataframe columns in Pandas
我有一個數據幀輸出看起來像這樣:
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打印為我想要作為輸出的列表版本。 grouper和joins變量用於彼此相鄰地傳遞字符串,並將它們聯接為單個字符串(出於國家/地區名稱的目的)。
您可以使用移位功能。 (查看數據框的外觀)
df['Total'] = df['Region'].shift(-1)
df = df[df.index %2 == 0]
order = [0,2,1]
df = df[df.columns[order]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.