> import numpy as np
> min(50, np.NaN)
50
> min(np.NaN, 50)
nan
Run Code Online (Sandbox Code Playgroud)
(相同的行为发生在max)
我知道我可以通过使用numpy.nanmin. 但是当顺序颠倒时,是什么导致了变化呢?是min输入顺序敏感?
在试图回答这个问题时,我遇到了一些好奇的东西(对我而言).
假设我想比较一系列形状(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) 我正在尝试清理我的数据帧,如果我的"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) 我正在使用索引大型多索引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)
所以我的问题是:导致此警告的原因是什么?我如何人为地诱发它?
这似乎是一个简单的问题,但是我之前找不到它(这个和这个很接近,但是答案不是很好)。
问题是:如果我想在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)
?
我有一个大的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) 我有一个 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 来说很简单,但是到目前为止,各种尝试加上谷歌搜索/搜索都没有帮助。
我想在 Keras 中使用扩张卷积。我发现AtrousConv2D但在 Keras 文档中找不到任何定义,当我使用时
acov=AtrousConv2D((3,3))(image)
Run Code Online (Sandbox Code Playgroud)
它产生这个错误
init () 缺少 1 个必需的位置参数:'kernel_size'
我需要扩张卷积,但我不知道如何使用此层或如何自己生成此层。
我试图找出两个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()吗?
为什么下面的列表理解会出错?我缺少什么?
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]