我试图通过使用命令FirebaseApp.configure()
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in })
application.registerForRemoteNotifications()
InstanceID.instanceID().instanceID { (result, _) in
if result != nil {
// Receive notifications from the "all" topic
Messaging.messaging().subscribe(toTopic: "all")
}
}
从dask.dataframe中仅选择一行。它返回4行,所有行都有x.loc[0].compute()
。我尝试了index=0
,但重设后仍然有4行包含reset_index
。 (我认为我确实进行了正确的重置,因为我做了index=0
,因此可以在新列中看到原始索引。)
我阅读了reset_index(drop=False)
文档,并说了一句,dask.dataframe
可能由于结构数据的结构化程度太高而与行数不一。
那么,如果我真的只想通过使用index=0
进行子集仅一行,那我该怎么做呢?
答案 0 :(得分:1)
修改
您的问题可能来自reset_index
。答案的末尾将说明此问题。本书的较早部分只是如何解决它。
例如,有以下dask DataFrame:
import pandas as pd
import dask
import dask.dataframe as dd
df = pd.DataFrame({'col_1': [1,2,3,4,5,6,7], 'col_2': list('abcdefg')},
index=pd.Index([0,0,1,2,3,4,5]))
df = dd.from_pandas(df, npartitions=2)
df.compute()
Out[1]:
col_1 col_2
0 1 a
0 2 b
1 3 c
2 4 d
3 5 e
4 6 f
5 7 g
具有重复的0
值的数字索引。由于loc
是
基于标签的索引器完全基于标签位置
-如果要执行
,它会同时选择两个0
标记的值
df.loc[0].compute()
Out[]:
col_1 col_2
0 1 a
0 2 b
-您将获得所有带有0
-s(或另一个指定标签)的行。
在pandas
中有一个pd.DataFrame.iloc
,它可以帮助我们通过数字索引选择行。遗憾的是,您无法这样做,因为iloc
是
基于整数的索引,可以按位置进行选择。
仅支持索引列位置。尝试选择行位置将引发ValueError。
要解决此问题,您可以执行一些索引技巧:
df.compute()
Out[2]:
index col_1 col_2
x
0 0 1 a
1 0 2 b
2 1 3 c
3 2 4 d
4 3 5 e
5 4 6 f
6 5 7 g
-现在,新索引的范围从0
到数据帧的长度-1
。
可以用loc
对其进行切片并执行以下操作(我想通过0
选择loc
标签的意思是“选择第一行”):
df.loc[0].compute()
Out[3]:
index col_1 col_2
x
0 0 1 a
关于乘以0的索引标签
如果您需要原始索引,它仍然在这里,可以通过
df.loc[:, 'index'].compute()
Out[4]:
x
0 0
1 0
2 1
3 2
4 3
5 4
6 5
我猜想,您从reset_index()
那里得到了这样的重复,因为它会为每个分区(例如,对于2个分区的表)产生新的0开头的索引:
df.reset_index().compute()
Out[5]:
index col_1 col_2
0 0 1 a
1 0 2 b
2 1 3 c
3 2 4 d
0 3 5 e
1 4 6 f
2 5 7 g