簡體   English   中英

將一列中的數據作為單獨的行連接到另一列

[英]Join data from one column in to another column as a separate row

我有一個 pandas DataFrame 這樣的:

    Year1   Year2   Total
0   2010    2011    2500
1   2012    2013    3000
2   2014    2015    4000

我想獲取Year1 Year2合並,並保持與之關聯的Total值,它應該如下所示:

    Year1   Total
0   2010    2500
1   2011    2500
2   2012    3000
3   2013    3000
4   2014    4000
5   2015    4000

我首先考慮復制df ,以便獲得 2011、2013 和 2015 的第二個“總計”值

df = pd.DataFrame(np.repeat(df.values, 2, axis=0))
df.columns = ['Year1', 'Year2', 'Total']

但我仍然不確定將列數據從Year2合並到Year1的步驟。

您可以使用append function 實現所需的 output 但之前需要執行幾個步驟:

import pandas as pd
df = pd.read_csv('df.txt')
newDf = df[["Year2", "Total"]].rename(columns={"Year2":"Year1"})
df.drop(columns=["Year2"], inplace=True)
resultDf = df.append(newDf)
resultDf.sort_values("Year1")

Output

第一年 全部的
2010 2500
2011年 2500
2012 3000
2013 3000
2014 4000
2015年 4000

你可以melt它:

out = (pd.melt(df, id_vars=['Total']).rename(columns={'value':'Year1'})
       .drop(columns='variable')[['Year1', 'Total']]
       .sort_values(by='Year1').reset_index(drop=True))

set_index與 "Total" + unstack

out = (df.set_index('Total').unstack().droplevel(0)
       .reset_index(name='Year1')[['Year1', 'Total']]
       .sort_values(by='Year1').reset_index(drop=True))

Output:

   Year1  Total
0   2010   2500
1   2011   2500
2   2012   3000
3   2013   3000
4   2014   4000
5   2015   4000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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