【发布时间】:2018-10-23 08:08:27
【问题描述】:
我有一个像这样的基表:
col1 是一列独立值,col2 是基于 Country 和 Type 组合的聚合。我想使用以下逻辑计算列 col3 到 col5:
- col3:col1 中一个元素与col1 总数的比值
- col4:col1 中的元素与 col2 中对应元素的比率
- col5:col3 和 col4 中逐行元素乘积的自然指数
我写了一个类似下面的函数来实现这个:
def calculate(df):
for i in range(len(df)):
df['col3'].loc[i] = df['col1'].loc[i]/sum(df['col1'])
df['col4'].loc[i] = df['col1'].loc[i]/df['col2'].loc[i]
df['col5'].loc[i] = np.exp(df['col3'].loc[i]*df['col4'].loc[i])
return df
这个函数执行了,给了我预期的结果,但是笔记本也抛出了一个警告:
SettingWithCopyWarning:
试图在数据帧的切片副本上设置值
请参阅文档中的注意事项: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
我不确定我是否在这里编写了最好的函数。任何帮助,将不胜感激!谢谢。
【问题讨论】:
-
嗯,你应该致力于矢量化而不是使用 for 循环。你如何在这里分享你的数据集和预期的输出——>更容易提供帮助。不错的努力!
-
以下解决方案之一有帮助吗?随意接受一个(在左侧打勾),或要求澄清。
-
道歉 - 我是这个平台的新手。是的,它有帮助!非常感谢您的 cmets。
标签: python pandas function dataframe