簡體   English   中英

調整Pandas中的數據框列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM