小编Jos*_*der的帖子

为什么 NaN 值使 min 和 max 对顺序敏感?

> import numpy as np

> min(50, np.NaN)
50   
> min(np.NaN, 50)
nan
Run Code Online (Sandbox Code Playgroud)

(相同的行为发生在max

我知道我可以通过使用numpy.nanmin. 但是当顺序颠倒时,是什么导致了变化呢?是min输入顺序敏感?

python numpy nan

18
推荐指数
2
解决办法
2476
查看次数

Pandas什么时候默认播放系列和数据帧?

在试图回答这个问题时,我遇到了一些好奇的东西(对我而言).

假设我想比较一系列形状(10,)和df形状(10,10):

np.random.seed(0)
my_ser = pd.Series(np.random.randint(0, 100, size=10))
my_df = pd.DataFrame(np.random.randint(0, 100, size=100).reshape(10,10))
my_ser > 10 * my_df
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,产生df(10,10)形状的矩阵.比较似乎是划线的.

但请考虑这种情况:

df = pd.DataFrame({'cell1':[0.006209, 0.344955, 0.004521, 0, 0.018931, 0.439725, 0.013195, 0.009045, 0, 0.02614, 0],
              'cell2':[0.048043, 0.001077, 0,0.010393, 0.031546, 0.287264, 0.016732, 0.030291, 0.016236, 0.310639,0], 
              'cell3':[0,0,0.020238, 0, 0.03811, 0.579348, 0.005906, 0,0,0.068352, 0.030165],
              'cell4':[0.016139, 0.009359, 0,0,0.025449, 0.47779, 0, 0.01282, 0.005107, 0.004846, 0],
              'cell5': [0,0,0,0.012075, 0.031668, 0.520258, 0,0,0,2.728218, 0.013418]})
i = 0
df.iloc[:,i].shape
>(11,)
(10 * df.drop(df.columns[i], axis=1)).shape
>(11,4)
(df.iloc[:,i] > (10 * …
Run Code Online (Sandbox Code Playgroud)

python pandas numpy-broadcasting

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

如果NaN存在于多列中的任何位置,则删除组

我正在尝试清理我的数据帧,如果我的"Base_2007"和"Base_2011"列包含NA,那么我应该完全删除该县.在我的情况下,因为两个县都包含NA,所以它们都将被删除.因此将返回空数据集.可以这样做吗?

数据:

  State  Year  Base_2007  Base_2011           County
0    AL  2012        NaN       14.0  Alabama_Country
1    AL  2013       12.0       20.0  Alabama_Country
2    AL  2014       13.0        NaN  Alabama_Country
3    DC  2011        NaN       20.0          Trenton
4    DC  2012       19.0        NaN          Trenton
5    DC  2013       20.0       21.0          Trenton
6    DC  2014       25.0       30.0          Trenton
Run Code Online (Sandbox Code Playgroud)

数据帧的尾部分:

{'State': {82550: 'WY', 82551: 'WY', 82552: 'WY', 82553: 'WY', 82554: 'WY', 82555: 'WY', 82556: 'WY', 82557: 'WY', 82558: 'WY', 82559: 'WY'}, 'County': {82550: 'Weston', 82551: 'Weston', 82552: 'Weston', 82553: 'Weston', …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

是什么原因导致Pandas中出现“索引超过lexsort深度”的警告?

我正在使用索引大型多索引Pandas df df.loc[(key1, key2)]。有时,我得到了一个系列(如预期的那样),但其他时候,我得到了一个数据框。我正在尝试隔离导致后者的情况,但是到目前为止,我所能看到的只是它与得到PerformanceWarning: indexing past lexsort depth may impact performance警告有关。

我想将其复制到此处,但无法生成另一个发出相同警告的案例。这是我的尝试:

def random_dates(start, end, n=10):
    start_u = start.value//10**9
    end_u = end.value//10**9
    return pd.to_datetime(np.random.randint(start_u, end_u, n), unit='s')

np.random.seed(0)
df = pd.DataFrame(np.random.random(3255000).reshape(465000,7))  # same shape as my data
df['date'] = random_dates(pd.to_datetime('1990-01-01'), pd.to_datetime('2018-01-01'), 465000)
df = df.set_index([0, 'date'])
df = df.sort_values(by=[3])  # unsort indices, just in case
df.index.lexsort_depth
> 0
df.index.is_monotonic
> False
df.loc[(0.9987185534991936, pd.to_datetime('2012-04-16 07:04:34'))]
# no warning
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:导致此警告的原因什么?我如何人为地诱发它?

python pandas

10
推荐指数
2
解决办法
4746
查看次数

在pandas DataFrame中的任何位置搜索值

这似乎是一个简单的问题,但是我之前找不到它(这个这个很接近,但是答案不是很好)。

问题是:如果我想在df中某处搜索值(我不知道它在哪一列中),然后返回所有具有匹配项的行。

什么是Pandaic最有效的方法?还有什么比以下更好的了:

for col in list(df):
    try:    
        df[col] == var
        return df[df[col] == var]
    except TypeError:
        continue 
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

将大熊猫df保存到hdf时发生OverflowError

我有一个大的Pandas数据框(〜15GB,8300万行),我有兴趣另存为h5(或feather)文件。一列包含数字的长ID字符串,该字符串应具有字符串/对象类型。但是即使我确保熊猫将所有列解析为object

df = pd.read_csv('data.csv', dtype=object)
print(df.dtypes)  # sanity check
df.to_hdf('df.h5', 'df')

> client_id                object
  event_id                 object
  account_id               object
  session_id               object
  event_timestamp          object
  # etc...
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

  File "foo.py", line 14, in <module>
    df.to_hdf('df.h5', 'df')
  File "/shared_directory/projects/env/lib/python3.6/site-packages/pandas/core/generic.py", line 1996, in to_hdf
    return pytables.to_hdf(path_or_buf, key, self, **kwargs)
  File "/shared_directory/projects/env/lib/python3.6/site-packages/pandas/io/pytables.py", line 279, in to_hdf
    f(store)
  File "/shared_directory/projects/env/lib/python3.6/site-packages/pandas/io/pytables.py", line 273, in <lambda>
    f = lambda store: store.put(key, value, **kwargs)
  File "/shared_directory/projects/env/lib/python3.6/site-packages/pandas/io/pytables.py", line 890, in put
    self._write_to_group(key, value, append=append, **kwargs) …
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas hdf feather

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

如何从 WTForms 中的 SelectField 获取值(非键)数据

我有一个 WTF SelectField,我正在尝试存储用户选择的名称以在另一个页面上显示。

鉴于我的表格是

choice = SelectField('Choice', choices=[('cho_1', 'Choice One'), ('cho2', 'Choice Two')])
Run Code Online (Sandbox Code Playgroud)

我明白那个

self.choice = form.choice.data
Run Code Online (Sandbox Code Playgroud)

将让我获得用户的选择(比如 cho_1),但是我如何获得价值(“选择一个”)?我觉得这对 dicts 来说很简单,但是到目前为止,各种尝试加上谷歌搜索/搜索都没有帮助。

python flask wtforms

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

如何在 keras 中实现扩张卷积?

我想在 Keras 中使用扩张卷积。我发现AtrousConv2D但在 Keras 文档中找不到任何定义,当我使用时

acov=AtrousConv2D((3,3))(image)
Run Code Online (Sandbox Code Playgroud)

它产生这个错误

init () 缺少 1 个必需的位置参数:'kernel_size'

我需要扩张卷积,但我不知道如何使用此层或如何自己生成此层。

python keras tensorflow

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

在 Pandas MultiIndex 中查找 NaN 值

我试图找出两个MultiIndex不同形状的Pandas对象之间的区别。我用过:

df1.index.difference(df2)
Run Code Online (Sandbox Code Playgroud)

并接收

TypeError: '<' not supported between instances of 'float' and 'str'
Run Code Online (Sandbox Code Playgroud)

我的索引是 str 和 datetime,但我怀疑那里NaNs隐藏着(浮点数)。因此我的问题是:

在 MultiIndex 某处找到 NaN 的最佳方法是什么?如何遍历级别和名称?我可以使用类似的东西isna()吗?

python pandas

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

使用列表理解展平元组列表的列表

为什么下面的列表理解会出错?我缺少什么?

a = [
[(1, 2), (11, 22), (111, 222)],
[(3, 4), (33, 44), (333, 444)],
[(5, 6), (55, 66), (555, 666)]
]

b = [k for k in j for j in i for i in a]
print(sorted(b))
Run Code Online (Sandbox Code Playgroud)

我知道有更优雅/可读的解决方案,但这是为了我自己的理解。

错误: 类型错误:“int”对象不可迭代

所需输出: [1, 2, 3, 4, 5, 6, 11, 22, 33, 44, 55, 66, 111, 222, 333, 444, 555, 666]

list-comprehension python-3.x

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