我正在使用Python中的pandas DataFrame,它具有10个变量(4个数字,6个类别)。我想用当前值的自然对数替换4个数字变量的值。
下面我的数据示例:
df = DataFrame
logcolumns =我要转换为自然日志的列的名称
Import numpy as np
Import pandas as pd
df = pd.read_csv("myfile.csv")
logcolumns = ['Volume', 'Sales', 'Weight', 'Price']
df[logcolumns] = np.log(df[logcolumns])
运行此命令后,我收到一个SettingWithCopyWarning:试图在DataFrame的切片副本上设置一个值。尝试改用.loc [row_indexer,col_indexer] =值
此过程适用于单个列以及整个数据框,但是当我尝试在选定列的列表上运行它时则无效。
答案 0 :(得分:0)
您可以按照警告中的建议进行操作,并使用基于标签的访问权限:
df.loc[:, logcolumns] = np.log(df[logcolumns])
官方文档在这里:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy