相关疑难解决方法(0)

如何在Pandas中处理SettingWithCopyWarning?

背景

我刚刚将我的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)

python dataframe pandas chained-assignment

536
推荐指数
16
解决办法
58万
查看次数

有条件的替换熊猫

我可能做的事非常愚蠢,但我很难过.

我有一个数据框,我想替换特定列中超过零值的值.我原以为这是实现这个目标的一种方式:

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)

这正是我想要的,但似乎不能将频道作为原始数据帧的一部分.

python replace series conditional-statements pandas

101
推荐指数
5
解决办法
16万
查看次数

if else在pandas数据帧中起作用

我正在尝试在数据帧上应用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 if-statement dataframe pandas

5
推荐指数
3
解决办法
4万
查看次数

pandas chained_assignment 警告异常处理

如果你在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)

python exception-handling pandas

5
推荐指数
1
解决办法
1万
查看次数