python – 根据同一行的其他列中的值将函数应用于dataframe列元素?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 根据同一行的其他列中的值将函数应用于dataframe列元素?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2493字,纯文字阅读大概需要4分钟。
内容图文
![python – 根据同一行的其他列中的值将函数应用于dataframe列元素?](/upload/InfoBanner/zyjiaocheng/727/26f3f9683156481498b91fbb9ea0f2a3.jpg)
我有一个数据帧:
df = pd.DataFrame(
{'number': ['10', '20' , '30', '40'], 'condition': ['A', 'B', 'A', 'B']})
df =
number condition
0 10 A
1 20 B
2 30 A
3 40 B
我想将一个函数应用于数字列中的每个元素,如下所示:
df['number'] = df['number'].apply(lambda x: func(x))
但是,即使我将函数应用于数字列,我希望函数也引用条件列,即伪代码:
func(n):
#if the value in corresponding condition column is equal to some set of values:
# do some stuff to n using the value in condition
# return new value for n
对于单个数字,我会写一个示例函数:
number = 10
condition = A
def func(num, condition):
if condition == A:
return num*3
if condition == B:
return num*4
func(number,condition) = 15
如何将相同的功能合并到我上面写的apply语句中?即,在对数字列中的值进行操作时,引用条件列中的值?
注意:我已经阅读了关于np.where(),pandas.loc()和pandas.index()的文档,但我无法弄清楚如何将其付诸实践.
我正在努力从函数中引用其他列的语法,因为我需要访问数字和条件列中的值.
因此,我的预期输出是:
df =
number condition
0 30 A
1 80 B
2 90 A
3 160 B
更新:以上内容太模糊了.请参阅以下内容:
df1 = pd.DataFrame({'Entries':['man','guy','boy','girl'],'Conflict':['Yes','Yes','Yes','No']})
Entries Conflict
0 "man" "Yes"
1 "guy" "Yes"
2 "boy" "Yes"
3 "girl" "No
def funcA(d):
d = d + 'aaa'
return d
def funcB(d):
d = d + 'bbb'
return d
df1['Entries'] = np.where(df1['Conflict'] == 'Yes', funcA, funcB)
Output:
{'Conflict': ['Yes', 'Yes', 'Yes', 'Np'],
'Entries': array(<function funcB at 0x7f4acbc5a500>, dtype=object)}
如何应用上面的np.where语句来获取注释中提到的pandas系列,并生成如下所示的所需输出:
期望的输出:
Entries Conflict
0 "manaaa" "Yes"
1 "guyaaa" "Yes"
2 "boyaaa" "Yes"
3 "girlbbb" "No
解决方法:
我不知道使用pandas.DataFrame.apply,但你可以定义一个特定条件:乘数键值映射(见下面的乘数),并将其传递给你的函数.然后,您可以使用列表推导来根据这些条件计算新的数字输出:
import pandas as pd
df = pd.DataFrame({'number': [10, 20 , 30, 40], 'condition': ['A', 'B', 'A', 'B']})
multiplier = {'A': 2, 'B': 4}
def func(num, condition, multiplier):
return num * multiplier[condition]
df['new_number'] = [func(df.loc[idx, 'number'], df.loc[idx, 'condition'],
multiplier) for idx in range(len(df))]
这是结果:
df
Out[24]:
condition number new_number
0 A 10 30
1 B 20 80
2 A 30 90
3 B 40 160
可能有一种矢量化的纯熊猫解决方案更“理想”.但这也适用于紧要关头.
内容总结
以上是互联网集市为您收集整理的python – 根据同一行的其他列中的值将函数应用于dataframe列元素?全部内容,希望文章能够帮你解决python – 根据同一行的其他列中的值将函数应用于dataframe列元素?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。