我有一組串列,我需要標簽是資料框中的單列,標簽中不在值中的值(合并后)應該為 0。
label = [0, 2, 1, 3, 4, 9, 8, 24, 86, 5] value = [103, 16, 10, 9, 5, 4, 4, 3, 3, 3]
label1 = [0, 2, 3, 1, 9, 15, 4, 6, 5, 23] value1 = [73, 14, 8, 7, 3, 3, 3, 2, 2, 2]
label2 = [0, 2, 1, 3, 9, 6, 10, 15, 4, 114] value2 = [48, 11, 7, 6, 3, 2, 2, 2, 2, 1]
我需要合并所有這些看起來像這樣:
label = [0, 2, 1, 3, 4, 9, 8, 15, 23, 10, 24, 86, 5, 114]
value = [103, 16, 10, 9, 5, 4, 4, 0, 0, 0, 3, 3, 3, 0]
value1 = [73, 14, 7, 8, 0, 3, 0, 3, 2, 0, 0, 0, 2, 0]
value2 = [48, 11, 7, 6, 2, 3, 0, 2, 0, 2, 0, 0, 0, 1]
這樣做的原因是我可以在 seaborn scatterplot/pairplot 上繪制資料,但我不介意是否有辦法在 scatterplot/pairplot 上繪制第一組資料
uj5u.com熱心網友回復:
一種方法是使用外部合并,它將根據您選擇的列合并資料框的列。下面是代碼。首先將標簽值對轉換為資料幀,然后合并 3 個資料幀。最后,將列名更改為您想要查看的內容...
## Your data
label = [0, 2, 1, 3, 4, 9, 8, 24, 86, 5]
value = [103, 16, 10, 9, 5, 4, 4, 3, 3, 3]
label1 = [0, 2, 3, 1, 9, 15, 4, 6, 5, 23]
value1 = [73, 14, 8, 7, 3, 3, 3, 2, 2, 2]
label2 = [0, 2, 1, 3, 9, 6, 10, 15, 4, 114]
value2 = [48, 11, 7, 6, 3, 2, 2, 2, 2, 1]
## Conver each list into dataframe
df=pd.DataFrame({'label':label, 'value':value})
df1=pd.DataFrame({'label':label1, 'value':value1})
df2=pd.DataFrame({'label':label2, 'value':value2})
## Merge the dataframes on label column
dfresult = pd.merge(df, df1, how="outer", on='label')
dfresult = pd.merge(dfresult, df2, how="outer", on='label').fillna(0)
## Rename columns and convert data to int
dfresult.rename(columns={'value':'value2', 'value_x':'value', 'value_y':'value1'}, inplace=True)
dfresult=dfresult.astype(int)
dfresult
輸出
label value value1 value2
0 0 103 73 48
1 2 16 14 11
2 1 10 7 7
3 3 9 8 6
4 4 5 3 2
5 9 4 3 3
6 8 4 0 0
7 24 3 0 0
8 86 3 0 0
9 5 3 2 0
10 15 0 3 2
11 6 0 2 2
12 23 0 2 0
13 10 0 0 2
14 114 0 0 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/527767.html
