相关疑难解决方法(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万
查看次数

.ix()总是优于.loc()和.iloc(),因为它更快并且支持整数和标签访问吗?

我正在学习Python pandas库.来自R背景,索引和选择功能似乎比它们需要的更复杂.我理解.loc()只是基于标签而.iloc()只是基于整数.

如果.ix()更快并支持整数和标签访问,为什么我应该使用.loc()和.iloc()?

python pandas

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

如何使用条件索引获取单元格上的标量值

我有如下所示的数据框.我需要获取B列的标量值,这取决于A的值(这是我脚本中的变量).我正在尝试loc()函数,但它返回一个Series而不是标量值.如何获得标量值()?

>>> x = pd.DataFrame({'A' : [0,1,2], 'B' : [4,5,6]})
>>> x
   A  B
0  0  4
1  1  5
2  2  6

>>> x.loc[x['A'] == 2]['B']
2    6
Name: B, dtype: int64

>>> type(x.loc[x['A'] == 2]['B'])
<class 'pandas.core.series.Series'>
Run Code Online (Sandbox Code Playgroud)

python pandas

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

pandas:使用(row,col)索引设置值

pandas 提供了按行和列索引列表查找的功能,

In [49]: index = ['a', 'b', 'c', 'd']

In [50]: columns = ['one', 'two', 'three', 'four']

In [51]: M = pandas.DataFrame(np.random.randn(4,4), index=index, columns=columns)

In [52]: M
Out[52]: 
        one       two     three      four
a -0.785841 -0.538572  0.376594  1.316647
b  0.530288 -0.975547  1.063946 -1.049940
c -0.794447 -0.886721  1.794326 -0.714834
d -0.158371  0.069357 -1.003039 -0.807431

In [53]: M.lookup(index, columns) # diagonal entries
Out[53]: array([-0.78584142, -0.97554698,  1.79432641, -0.8074308 ])
Run Code Online (Sandbox Code Playgroud)

我想使用相同的索引方法来设置M元素.我怎样才能做到这一点?

python pandas

17
推荐指数
2
解决办法
4万
查看次数

Pandas:通过行索引和列名称获取单元格值

假设我们有一个 pandas 数据框:

   name  age  sal
0  Alex   20  100
1  Jane   15  200
2  John   25  300
3   Lsd   23  392
4   Mari  21  380
Run Code Online (Sandbox Code Playgroud)

假设现在删除了几行,但我们不知道已删除的索引。例如,我们使用 删除行索引 1 df.drop([1])。现在数据框可以归结为:

  fname  age  sal
0  Alex   20  100
2  John   25  300
3   Lsd   23  392
4   Mari  21  380
Run Code Online (Sandbox Code Playgroud)

我想从行索引 3 和列“年龄”获取值。它应该返回 23。我该怎么做?

df.iloc[3, df.columns.get_loc('age')]不起作用,因为它将返回 21。我猜 iloc 采用连续行索引?

python pandas

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

从单行pandas DataFrame中提取值

我有一个关系数据库格式的数据集(通过各种.csv文件的ID链接).

我知道每个数据框只包含一个ID值,我想知道从该行中提取值的最简单方法.

我现在在做什么:

# the group has only one element
purchase_group = purchase_groups.get_group(user_id)
price = list(purchase_group['Column_name'])[0]
Run Code Online (Sandbox Code Playgroud)

第三排困扰我,因为它似乎很难看,但我不确定解决方法是什么.分组(我猜)假设可能有多个值并返回一个<class 'pandas.core.frame.DataFrame'>对象,而我只想返回一行.

python pandas

7
推荐指数
3
解决办法
2万
查看次数

如何将元组值设置为pandas数据帧?

我想做的应该是非常简单的.基本上,我有一些数据帧,我需要为某些列分配一些元组值.

例如:

pd_tmp = pd.DataFrame(np.random.rand(3,3))
pd_tmp["new_column"] = ("a",2)
Run Code Online (Sandbox Code Playgroud)

我只需要一个带有元组值的新列,我该怎么办?

ValueError: Length of values does not match length of index
Run Code Online (Sandbox Code Playgroud)

前面的代码得到错误.

python pandas

4
推荐指数
2
解决办法
5463
查看次数

标签 统计

pandas ×7

python ×7

chained-assignment ×1

dataframe ×1