[英]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")
第一年 | 全部的 |
---|---|
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.