[英]Pandas: create new column in one dataframe with values based on matching key from another dataframe
我有兩個pandas數據框,第一個數據框有兩個列假定為鍵和值,第二個數據框僅包含鍵,我想在第二個數據框中添加新列,此列的值應為與第一個數據幀匹配的鍵
df = pd.DataFrame({'vi' : ['a','b','c','d','e'],'s':[2,5,7,0,1]})
tf = pd.DataFrame({'vi' : ['b','d','c','a','e']})
df
vi s
a 2
b 5
c 7
d 0
e 1
tf
vi
b
d
c
a
e
result tf
vi s
b 5
d 0
c 7
a 2
e 1
合並時,您需要指定left
以確保tf
中的所有值都包含在新數據框中。 由於兩個數據框的鍵列名稱相同,因此請指定on='vi'
。
df = pd.DataFrame({'vi': ['a', 'b', 'c', 'd', 'e', 'z'],
's': [2, 5, 7, 0, 1, 10]})
tf = pd.DataFrame({'vi': ['b', 'd', 'c', 'a', 'e', 'f']})
>>> tf.merge(df, how='left', on='vi')
vi s
0 b 5
1 d 0
2 c 7
3 a 2
4 e 1
5 f NaN
我已經將兩個數據集擴展為一個非唯一值。 請注意,上面的結果與簡單的合並有何不同,默認情況下,簡單的合並會進行內部聯接。
>>> tf.merge(df)
vi s
0 b 5
1 d 0
2 c 7
3 a 2
4 e 1
將列附加到數據框后,行索引由索引確定。
您可以使用
df = pd.DataFrame({'s':[2,5,7,0,1]})
df.index = ['a','b','c','d','e']
默認情況下,索引是從0到N-1的整數范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.