我刚开始接触熊猫,我正在尝试向现有数据框添加一个新列。
我有两个数据框,其中一个数据框的索引链接到另一个数据框中的列。如果这些值相等,我需要将源数据框中另一列的值放入目标列的新列中。
下面的代码部分说明了我的意思。评论部分是我需要的输出。
我想我需要 .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
原文由 ArnJac 发布,翻译遵循 CC BY-SA 4.0 许可协议
这不是很好的做法,但取决于您的需要,在某些情况下可能没问题。
问题 1:加入操作
一个好的起点是考虑是 什么让 Index 与标准 DataFrame 列不同。这就产生了一个问题:如果您的索引有重复值,是否真的需要将其指定为索引,或者它是否只是
RangeIndex
ed DataFrame 中的另一列?如果您曾经使用过 SQL 或任何其他 DMBS,并且想使用.join
或.merge
等 函数模拟 pandas 中的连接操作,如果您有重复的索引值。合并将为您提供基本上是笛卡尔积的东西——可能不是您要找的东西。例如:
问题 2:性能
如 本文 所述,唯一值索引使某些操作变得高效。
关于
.loc
使用
.loc
将返回标签的所有实例。根据您的目标,这可能是一种祝福或诅咒。例如,