这是一个奇怪的具体问题,但是
如果我有一个 pandas 数据框,如下所示:
...
8 0
9 0
10 0
11 0
12 0
13 Dogs
14 Cats
...
Run Code Online (Sandbox Code Playgroud)
我需要它来查看所有字符串类型并将它们更改为 1,所以:
...
8 0
9 0
10 0
11 0
12 0
13 1
14 1
...
Run Code Online (Sandbox Code Playgroud)
有没有办法让 df.replace() 查看字符串类型?
谢谢!
好玩的问题!
我有一个包含许多列的数据框,但相关的列是:id,event_time
这些ID是可重复的。我正在尝试计算每行中ID出现之前数据帧中ID出现的所有时间。因此,如果id = 43且event_time = 2016-01-01 12:00:00,我希望计算id 43在此event_time之前发生的所有时间。event_time已使用pd.to_datetime()格式化,但不是索引。
这个循环解决了这个问题,但是对于400k +行来说,它实在太慢了。
occs=[]
for ix in range(len(df)):
cur=df.iloc[[ix]]
occurrences=df[(df.id==cur.id.values[0])&
(df.event_time < cur.event_time.values[0])]
occs.append(len(occurrences))
df['total_occ']=occs
Run Code Online (Sandbox Code Playgroud)
我知道必须有一个更好的方法,可能是使用group by。关键是它只能在event_time之前的时间出现,并且它们的顺序不正确。
感谢大家!
*编辑样本数据*
id | event_time | count
11 2016-11-09 1
8 2016-11-10 1
32 2016-11-08 0
11 2016-11-08 0
8 2016-11-11 2
8 2016-11-07 0
Run Code Online (Sandbox Code Playgroud)
(但是,计数将高得多,以数千为单位...计数是所需的输出)