我正在尝试将简单的函数应用于pandas中的组。我对组数据帧(在user_id上分组)的结果如下所示: user_id cancelled_at
10 NaN
10 2021-02-26
10 NaN
10 NaN
10 2021-06-01
10 NaN 我想根据'cancelled_at‘列的条件将标签添加到每一行,如下所示: user_id
我正在尝试使用pandas将一个预定义函数(myfunc)应用到我的DataFrame中的一个新系列。该函数将检查旧列(对于每行)中的每个索引中的值是否大于前一列中的值,如果是,则返回1,如果不是,则返回0。
我还尝试过series.apply()函数,我得到的结果是:跨越新创建的列中的所有行。
def myfunc(x):
for i in range(0,86):
if x.iloc[i + 1] > x.iloc[i]:
yield 1
else:
yield 0
df2['Highe
虽然使用pandas滚动方法来应用标准公式很容易,但如果它涉及多列和有限的过去行,我发现很难。使用以下代码来更好地阐述: import numpy as np
import pandas as pd
#create dummy pandas
df=pd.DataFrame({'col1':np.arange(0,25),'col2':np.arange(100,125),'col3':np.nan})
def func1(shortdf):
#dummy formula
#use last row of col1 mult
我有100,000行和大约500+列。我想计算前5行的加权平均值,并对每行使用该数据。例如,我有10行 第1行:5-无处理 行6=行5*1+行4* 0.8 +行3* 0.6 +行2* 0.4 +行1* 0.2 使用Pandas我已经解决了这个问题,但在整个数据集上完成这个操作需要13-14个小时。我读到过.apply函数,但我不确定在访问前面行中的信息时如何使用它。 for i in range(lengthAllData): #Length = Total rows
if i>=5:
alldata.iloc[i,1:width] = (alldata.iloc
我的数据帧如下所示: index name value
0 John Foo
1 John Bar
2 John Bar
3 John Foo
4 Jane Foo
5 Jane Bar
6 Jane Bar
7 John Foo
8 John Bar 我尝试在出现名称的第一个组之后删除所有出现的John,这样数据就会如下所示: index name value
0 John Foo
1 John Ba
我正在试图计算一个列与它的延迟(移位)之间的距离,这是Pandas dataframe中的组。需要对组进行排序,以便提前一个时间步骤进行转移。这样做的标准方法是通过.groupby() (也称为拆分),然后在每个组上使用.apply()的距离函数,然后重新加入.concat()。这很好,但是只有当我没有显式地对分组数据进行排序的时候。当我对分组数据error进行排序时,会在重新连接步骤中得到一个错误。
下面是我的示例代码,对于这些代码,我能够再现意外的行为:
import pandas as pd
def dist_apply(group):
# when commented ou
我面临Python/Pandas的性能问题。我有一个for循环,比较Pandas DataFrame中的后续行:
for i in range(1, N):
if df.column_A.iloc[i] == df.column_A.iloc[i-1]:
if df.column_B.iloc[i] == 'START' and df.column_B.iloc[i-1] == 'STOP':
df.time.iloc[i] = df.time.iloc[i] - df.time.iloc[i-1]
工作正常,但速
我有一个如下所示的数据集:
Value Type X_sq
-1.975767 Weather
-0.540979 Fruits
-2.359127 Fruits
-2.815604 Corona
-0.929755 Weather
我想迭代每一行,并计算上面每一行的平方值之和(只有在Type匹配的情况下)。我想把这个值放在X.sq列中。
例如,在第一行,上面什么都没有。所以只有(-1.975767 x -1.975767)。在第二行,上面没有水果行,所以它只是-0.540979 x -0.540979。但是,在第三行中
我有几千行的DataFrame。其结构如下
A B C D 0 q 20 'f' 1 q 14 'd' 2 o 20 'a'
我想比较当前行和下一行的A列。如果这些值相等,我希望将值较低的B列的值添加到具有较大值的比较行的D列。然后,我要删除B列的已移动列值,这就像一个交换过程。
A B C D 0 q 20 'f' 14 1 o 20 'a'
我有数千行,loc,loc,at方法工作慢
我有这样的数据:
Time Rain1Hour Rain6Hour
0 0 NaN
1 1 NaN
2 1 NaN
3 1 NaN
4 1 NaN
5 1 NaN
6 1 NaN
7 0 NaN
其中,Rain1Hour是最后一个小时的雨,而Rain6Hour是最后6个小时的累积雨,这意味着我要使用Rain1Hour列的数据,最后6小时的降雨量之和。如何用来自Rain6Hour的数据填充列Rain1Hour。我想要的是:
我试图根据数据行是否是重复的,删除它们的行,并始终保留最近的行。使用df.drop_duplicates()很简单,但是我也需要应用timedelta。如果EndDate列比另一个ID相同的行早182天,则该行将被视为重复。
这个表显示了我需要放在Duplicate列中的行。
ID EndDate Duplicate
0 A 2008-07-31 00:00:00 True
1 A 2008-09-31 00:00:00 False
2 A 2009-07-31 00:00:00 False
3 A 2010-03-31