我只是进入熊猫,我正在尝试向现有数据框添加新列。
我有两个数据帧,其中一个数据帧的索引链接到另一数据帧中的列。在这些值相等的地方,我需要将源数据帧中另一列的值放在目标列的新列中。
下面的代码部分说明了我的意思。评论的部分是我需要的输出。
我想我需要.loc[]
功能。
另一个较小的问题:拥有非唯一索引是一种不好的做法吗?
import pandas as pd
d = {'key':['a', 'b', 'c'],
'bar':[1, 2, 3]}
d2 = {'key':['a', 'a', 'b'],
'other_data':['10', '20', '30']}
df = pd.DataFrame(d)
df2 = pd.DataFrame(data = d2)
df2 = df2.set_index('key')
print df2
## other_data new_col
##key
##a 10 1
##a 20 1
##b 30 2
使用重命名index
方式Series
:
df2['new'] = df2.rename(index=df.set_index('key')['bar']).index
print (df2)
other_data new
key
a 10 1
a 20 1
b 30 2
或map
:
df2['new'] = df2.index.to_series().map(df.set_index('key')['bar'])
print (df2)
other_data new
key
a 10 1
a 20 1
b 30 2
如果要更好的性能,最好是避免索引重复。还有一些功能,例如reindex
重复索引失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句