我刚刚将我的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) 我有一个〜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)
是否有一种更优雅的方式(找到包含空值的行)?
给定一个pandas数据帧,其中包含(可能)NaN值分散在这里和那里:
问题:如何确定哪些列包含NaN值?特别是,我可以获得包含NaN的列名列表吗?
谢谢
我有一个dataFrame熊猫,有几个列都有空值.是否有内置函数可以删除这些列?
谢谢!
我使用pandas.DataFrame.dropna方法删除包含NaN的行.此函数返回一个排除已删除行的数据框,如文档中所示.
如何将已删除的行的副本存储为单独的数据框?方法是:
mydataframe[pd.isnull(['list', 'of', 'columns'])]
Run Code Online (Sandbox Code Playgroud)
假设dropna被调用,总是保证返回dropna drop相同的行subset=['list', 'of', 'columns']?
这是此问题的扩展,其中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) 我试图了解如何识别数据帧组中的统计异常值。我需要按条件对行进行分组,然后将这些组减少为一行,然后在所有减少的行中找到异常值。
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) 我正在过滤我的 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) 我有如下数据框。
输入
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 中如何做到这一点
我有一个巨大的数据框架.我应该如何用NaN替换一系列值(-200,-100)?
如果我有这个数据框:
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)
做这个的最好方式是什么?
我们都知道著名的问题:如何删除 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) 我有一个看起来像这样的数据框:
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值组合的行.存在许多这些期望的组合,包括双峰和三重峰.以下是我想要提取的三种组合的示例:
我已经从这个问题中了解了np.isfinite和pd.notnull命令,但我不知道如何将它们应用于列的组合.
此外,一旦我有一个用于删除与我所需组合之一不匹配的行的命令列表,我不知道如果它们与任何所需组合不匹配,我不知道如何告诉Pandas仅删除行.
pandas ×13
python ×13
dataframe ×8
nan ×3
combinations ×1
group-by ×1
null ×1
numpy ×1
outliers ×1
python-3.x ×1