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

Python Pandas如何在不显式列出列的情况下从DataFrame中选择包含一个或多个空值的行?

我有一个〜300K行和~40列的数据帧.我想知道是否有任何行包含空值 - 并将这些'null'行放入一个单独的数据帧中,以便我可以轻松地探索它们.

我可以明确地创建一个掩码:

mask = False
for col in df.columns: 
    mask = mask | df[col].isnull()
dfnulls = df[mask]
Run Code Online (Sandbox Code Playgroud)

或者我可以这样做:

df.ix[df.index[(df.T == np.nan).sum() > 1]]
Run Code Online (Sandbox Code Playgroud)

是否有一种更优雅的方式(找到包含空值的行)?

python null nan pandas

198
推荐指数
4
解决办法
26万
查看次数

如何在Pandas数据帧(python)中查找哪些列包含任何NaN值

给定一个pandas数据帧,其中包含(可能)NaN值分散在这里和那里:

问题:如何确定哪些列包含NaN值?特别是,我可以获得包含NaN的列名列表吗?

谢谢

python numpy nan dataframe pandas

110
推荐指数
7
解决办法
12万
查看次数

删除数据帧Pandas中的NULL列?

我有一个dataFrame熊猫,有几个列都有空值.是否有内置函数可以删除这些列?

谢谢!

python nan dataframe pandas

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

Pandas dropna - 商店掉线

我使用pandas.DataFrame.dropna方法删除包含NaN的行.此函数返回一个排除已删除行的数据框,如文档中所示.

如何将已删除的行的副本存储为单独的数据框?方法是:

mydataframe[pd.isnull(['list', 'of', 'columns'])]
Run Code Online (Sandbox Code Playgroud)

假设dropna被调用,总是保证返回dropna drop相同的行subset=['list', 'of', 'columns']

python python-3.x pandas

13
推荐指数
2
解决办法
5542
查看次数

Python - 如果两列是NaN,则删除行

这是此问题的扩展,其中OP想要知道如何删除单个列中的值为NaN的行.

我想知道如何删除2(或更多)列中的值都是 NaN的行.使用第二个答案创建的数据框:

In [1]: df = pd.DataFrame(np.random.randn(10,3))

In [2]: df.ix[::2,0] = np.nan; df.ix[::4,1] = np.nan; df.ix[::3,2] = np.nan;

In [3]: df
Out[3]:
          0         1         2
0       NaN       NaN       NaN
1  2.677677 -1.466923 -0.750366
2       NaN  0.798002 -0.906038
3  0.672201  0.964789       NaN
4       NaN       NaN  0.050742
5 -1.250970  0.030561 -2.678622
6       NaN  1.036043       NaN
7  0.049896 -0.308003  0.823295
8       NaN       NaN  0.637482
9 -0.310130  0.078891       NaN
Run Code Online (Sandbox Code Playgroud)

如果我使用drop.na()命令,特别是drop.na(subset=[1,2]),那么它完成一个"或"类型drop并离开:

In[4]: df.dropna(subset=[1,2])
Out[4]: 
          0 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

使用 pandas 识别统计异常值:分组并将行减少到不同的数据帧中

我试图了解如何识别数据帧组中的统计异常值。我需要按条件对行进行分组,然后将这些组减少为一行,然后在所有减少的行中找到异常值。

df = pd.DataFrame({'X0': {0: 1, 1: 1, 2: 1, 3: 1, 4: 0, 5: 1, 6: 1, 7: 1, 8: 0, 9: 1, 10: 0, 11: 1, 12: 0, 13: 1, 14: 1, 15: 1, 16: 0, 17: 0, 18: 0, 19: 1, 20: 0, 21: 1, 22: 1, 23: 1, 24: 1, 25: 0, 26: 1, 27: 1, 28: 1, 29: 1, 30: 0, 31: 1, 32: 0, 33: 1, 34: 0, 35: 1, 36: 1, 37: 0, …
Run Code Online (Sandbox Code Playgroud)

python group-by outliers pandas

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

Python Pandas:获取列不为空的 DataFrame 的行

我正在过滤我的 DataFrame 删除那些特定列的单元格值为 None 的行。

df = df[df['my_col'].isnull() == False]
Run Code Online (Sandbox Code Playgroud)

工作正常,但 PyCharm 告诉我:

PEP8:与 False 的比较应该是 'if cond is False:' 或 'if not cond:'

但我想知道我应该如何将它应用到我的用例中?使用“not ...”或“is False”不起作用。我目前的解决方案是:

df = df[df['my_col'].notnull()]
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

6
推荐指数
1
解决办法
9705
查看次数

如何删除数据帧所有列中仅包含 NaN 值的行?

我有如下数据框。

输入

df

A     B     C
1     2     1
NaN   4     2
3     NaN   NaN
NaN   NaN   NaN
4     2     NaN
NaN   NaN   NaN
Run Code Online (Sandbox Code Playgroud)

输出

  A     B     C
  1     2     1
  NaN   4     2
  3     NaN   NaN
  4     2     NaN
Run Code Online (Sandbox Code Playgroud)

在 python 中如何做到这一点

python dataframe pandas

4
推荐指数
1
解决办法
6372
查看次数

如何在Pandas数据框架中用NaN替换一系列值?

我有一个巨大的数据框架.我应该如何用NaN替换一系列值(-200,-100)?

python dataframe pandas

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

只删除熊猫中完全空的行

如果我有这个数据框:

d = {'col1': [1, np.nan, np.nan], 'col2': [1, np.nan, 1]}
df = pd.DataFrame(data=d)

    col1    col2
0   1.0     1.0
1   NaN     NaN
2   NaN     1.0
Run Code Online (Sandbox Code Playgroud)

并且只想删除空行以生成以下内容:

d = {'col1': [1, np.nan], 'col2': [1, 1]}
df = pd.DataFrame(data=d)

    col1    col2
0   1.0     1
1   NaN     1
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

python pandas

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

选择数据帧中至少一列为 NaN 的行

我们都知道著名的问题:如何删除 Pandas DataFrame 中某一列值为 NaN 的行

但是如何选择 pandas dataframe 中的行df,其中至少一列为 NaN。以便:

df
   columnA columnB
0   NaN        1
1   1          2
2   NaN       NaN
3   1         NaN
Run Code Online (Sandbox Code Playgroud)

将导致:

df
   columnA columnB
0   NaN        1
2   NaN       NaN
3   1         NaN
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Pandas - 根据NaN值的组合删除行

我有一个看起来像这样的数据框:

NUM   A      B        C      D        E        F
p1    NaN    -1.183   NaN    NaN      NaN      1.829711
p5    NaN    NaN      NaN    NaN      1.267   -1.552721
p9    1.138  NaN      NaN    -1.179   NaN      1.227306
Run Code Online (Sandbox Code Playgroud)

在以下列中始终存在非NaN值:列F和至少一个其他列AE.

我想创建一个子表,其中只包含那些在列中包含某些非NaN值组合的行.存在许多这些期望的组合,包括双峰和三重峰.以下是我想要提取的三种组合的示例:

  1. 在A列和B列中包含非NaN值的行
  2. 在C&D中包含非NaN值的行
  3. 在A&B和C中包含非NaN值的行

我已经从这个问题中了解了np.isfinite和pd.notnull命令,但我不知道如何将它们应用于列的组合.

此外,一旦我有一个用于删除与我所需组合之一不匹配的行的命令列表,我不知道如果它们与任何所需组合不匹配,我不知道如何告诉Pandas仅删除行.

python combinations dataframe pandas

0
推荐指数
1
解决办法
2804
查看次数