我刚刚将我的Pandas从0.11升级到0.13.0rc1.现在,该应用程序正在弹出许多新的警告.其中一个是这样的:
E:\FinReporter\FM_EXT.py:449: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Run Code Online (Sandbox Code Playgroud)
我想知道究竟是什么意思?我需要改变什么吗?
如果我坚持使用,我应该如何暂停警告quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE?
def _decode_stock_quote(list_of_150_stk_str):
"""decode the webpage and return dataframe"""
from cStringIO import StringIO
str_of_all = "".join(list_of_150_stk_str)
quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) #dtype={'A': object, 'B': object, 'C': np.float64}
quote_df.rename(columns={'A':'STK', 'B':'TOpen', 'C':'TPCLOSE', 'D':'TPrice', 'E':'THigh', 'F':'TLow', 'I':'TVol', 'J':'TAmt', 'e':'TDate', 'f':'TTime'}, inplace=True)
quote_df = quote_df.ix[:,[0,3,2,1,4,5,8,9,30,31]]
quote_df['TClose'] = quote_df['TPrice']
quote_df['RT'] …Run Code Online (Sandbox Code Playgroud) 我可能做的事非常愚蠢,但我很难过.
我有一个数据框,我想替换特定列中超过零值的值.我原以为这是实现这个目标的一种方式:
df[df.my_channel > 20000].my_channel = 0
Run Code Online (Sandbox Code Playgroud)
如果我将频道复制到新的数据框中,那很简单:
df2 = df.my_channel
df2[df2 > 20000] = 0
Run Code Online (Sandbox Code Playgroud)
这正是我想要的,但似乎不能将频道作为原始数据帧的一部分.
我正在尝试在数据帧上应用if条件,但我遗漏了一些东西(错误:系列的真值是不明确的.使用a.empty,a.bool(),a.item(),a. any()或a.all().)
raw_data = {'age1': [23,45,21],'age2': [10,20,50]}
df = pd.DataFrame(raw_data, columns = ['age1','age2'])
def my_fun (var1,var2,var3):
if (df[var1]-df[var2])>0 :
df[var3]=df[var1]-df[var2]
else:
df[var3]=0
print(df[var3])
my_fun('age1','age2','diff')
Run Code Online (Sandbox Code Playgroud) 如果你在Python曾与熊猫你dataframes的切片工作的时候就已经知道chained_assignment警告(如例如描述这里)。
我找到了pandas.options.mode.chained_assignment可以设置为的选项
None,忽略警告"warn", 打印警告信息"raise", 引发异常与文档比较
我包含了一个最小示例,在try..except..else异常处理块中触发此警告。我希望仅使用设置触发异常pandas.options.mode.chained_assignment = "raise",如下面的示例 3 所示。
在这个最小的示例中,行为符合预期,因此示例 2
pandas.options.mode.chained_assignment = "warn"仅导致打印警告消息,但不会引发异常。
然而,在一个更大的框架中,我看到一个异常被引发,即使参数被设置为pandas.options.mode.chained_assignment = "warn",就像在最小的例子中一样之前用打印检查(见示例 4)
是否有任何其他 Pandas 参数会影响此有关异常引发的警告消息的行为?
这是一个最小的代码示例,设置/打印pd.options.mode.chained_assignment参数并在try..catch..except块中显示行为。
import pandas as pd
# set the chained_assignment option
pd.options.mode.chained_assignment = "raise" # raises exception in case of warning
pd.options.mode.chained_assignment = "warn" # prints warning in case of warning, no exception is raised
pd.options.mode.chained_assignment …Run Code Online (Sandbox Code Playgroud)