Python:pandas:将行值与列名/键值匹配

2024-01-11

Problem
“如何将行值与列名匹配并在 pandas 中获取该相交值”

Context
我们有一个像这样的 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

用言语来说,专栏"value"应从名称相交的相应列中获取数字。

So, if name == 'john',然后从“john”列中获取值
So, if name == 'mac',然后从“mac”列中获取值

到目前为止已尝试过
一堆 lambda(没有成功)。

规格
蟒蛇:3.5.2
熊猫:0.18.1


弃用通知: lookup was v1.2.0 中已弃用 https://pandas.pydata.org/docs/whatsnew/v1.2.0.html#deprecations

你可以使用DataFrame.lookup http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.lookup.html,它接受要使用的行和列标签:

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

请注意,这会出现重复行标签的问题(可以通过添加重置索引来解决)。应该比调用要快apply,这可能会很慢,但如果你的框架不是太大,两者应该都能很好地工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:pandas:将行值与列名/键值匹配 的相关文章

随机推荐