问题
“如何将行值与列名匹配,并在pandas中获取该交叉值”
上下文
我们有这样的熊猫df:
df = pd.DataFrame([{'name': 'john', 'john': 1, 'mac': 10}, {'name': 'mac', 'john': 2, 'mac': 20}], columns=["name", "john", "mac"])
看起来像这样:
name | john | mac
john | 1 | 10
mac | 2 | 20
期望的输出
name | john | mac | value
john | 1 | 10 | 1
mac | 2 | 20 | 20
换句话说,列“值”应该取名称相交的相应列中的数字.
所以,如果name ==’john’,那么从’john’列获取值
所以,如果name ==’mac’,那么从’mac’列中获取值
到目前为止尝试过
一群lambdas(没有成功).
产品规格
Python:3.5.2
熊猫:0.18.1
解决方法:
您可以使用DataFrame.lookup
,它接受要使用的行和列标签:
In [66]: df
Out[66]:
name john mac
0 john 1 10
1 mac 2 20
In [67]: df["value"] = df.lookup(df.index, df.name)
In [68]: df
Out[68]:
name john mac value
0 john 1 10 1
1 mac 2 20 20
请注意,这会出现重复行标签的问题(通过添加reset_index可以轻松解决).它应该比调用apply更快,这可能非常慢,但是如果你的帧不是太大,那么它们应该运行得足够好.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。