字典-
theDict = {'Apple': '50',
'Mango': '70',
'Banana': '20'}
数据帧-
df=pd.DataFrame({'id':[1,2,3],
'var1':['Apple','Papaya','Banana'],
'var2':['Papaya','Mango','Apple'],
'var3':['Banana','Guava','Grapes']})
如果字典项(例如Apple)出现在dataframe行中,那么输出应该是一个值为50的新列
如果有两种水果,例如,芒果和苹果在一行中,那么输出应该是该行前面的50+70
输出样本-
df=pd.DataFrame({'id':[1,2,3],
'var1':['Apple','Papaya','Banana'],
'var2':['Papaya','Mango','Apple'],
'var3':['Banana','Guava','Grapes']
'Output_var':['50','50+70','20']})
如果值存在或不存在,则创建值为True或False的数据帧
m = df.isin(theDict)
print (m)
现在不确定如何循环dataframe并创建新列
欢迎任何其他方法
我曾考虑将数据帧转换为numpy数组并使用循环,但我的数据集非常大,不确定这是否是一种最佳的方法
使用
replace
和生成器表达式(或列表理解),在每列上使用pd.to_numeric
。最后,在生成器表达式的输出上调用sum
首先,我们使用
melt
将数据解压到行中然后我们使用
Series.map
将您的字典映射到水果最后,我们使用
GroupBy.sum
和join
:另一种方法是使用apply沿轴映射,它现在接受
axis
参数如果您只想加入这些值:
相关问题 更多 >
编程相关推荐