python - 使用与列名值匹配的键创建新列
问题描述
创建一个新列列出每个索引的正确水果计数的最佳方法是什么。
# create dummy data
import pandas as pd
inp = [{'Fruit':'Apple', 'Apple_count':100, 'Orange_count':10, 'Banana_count':50, 'Pear_count':200},
{'Fruit':'Apple', 'Apple_count':100, 'Orange_count':10, 'Banana_count':50, 'Pear_count':200},
{'Fruit':'Apple', 'Apple_count':100, 'Orange_count':10, 'Banana_count':50, 'Pear_count':200},
{'Fruit':'Orange', 'Apple_count':100, 'Orange_count':10, 'Banana_count':50, 'Pear_count':200},
{'Fruit':'Orange', 'Apple_count':100, 'Orange_count':10, 'Banana_count':50, 'Pear_count':200},
{'Fruit':'Banana', 'Apple_count':100, 'Orange_count':10, 'Banana_count':50, 'Pear_count':200},
{'Fruit':'Pear', 'Apple_count':100, 'Orange_count':10, 'Banana_count':50, 'Pear_count':200}]
df = pd.DataFrame(inp)
Fruit Apple_count Orange_count Banana_count Pear_count
0 Apple 100 10 50 200
1 Apple 100 10 50 200
2 Apple 100 10 50 200
3 Orange 100 10 50 200
4 Orange 100 10 50 200
5 Banana 100 10 50 200
6 Pear 100 10 50 200
我想为每个行索引创建一个新列,其中包含水果类别的相应计数。
期望的输出:
Fruit Apple_count Orange_count Banana_count Pear_count Fruit_count
0 Apple 100 10 50 200 100
1 Apple 100 10 50 200 100
2 Apple 100 10 50 200 100
3 Orange 100 10 50 200 10
4 Orange 100 10 50 200 10
5 Banana 100 10 50 200 200
6 Pear 100 10 50 200 50
我可以写一堆loc
条件句,但在我的例子中,类别比这个例子中列出的要多得多。
Fruit
我还有一个 dict和Fruit_count
列名的键值对。
fruit_dict = {'Apple':'Apple_count', 'Orange':'Orange_count', 'Banana':'Banana_count', 'Pear':'Pear_count'}
解决方案
这似乎对我有用!
df["Fruit_count"] = df["Fruit"].apply(lambda x: f"{x}_count").map(df.iloc[0])
或者,如果您想使用fruit_dict
df["Fruit_count"] = df["Fruit"].map(fruit_dict).map(df.iloc[0])
推荐阅读
- c - 如何计算具有不同数据类型的结构的校验和?
- python - virtualenv vs virtualenvwrapper
- android - Ionic build 在 29 以下的 android SDK 平台上显示白屏
- c# - 堆栈破坏是如何发生的?
- python - KivyMD 滚动视图示例
- spring - factory.NoSuchBeanDefinitionException:没有名为“org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry”的bean可用
- excel - 什么更好的保存在内存中——一个字符串还是一个对象?
- javascript - React DOM 不更新状态变化
- google-colaboratory - 列表中关于 fors 和循环的内容
- prolog - 如何将 maplist 和 [..]>> 与接地变量一起使用?