【发布时间】:2022-01-11 20:37:57
【问题描述】:
我正在处理一个不完整的数据,该数据也有双精度数,我需要从双精度数中清除它,如果有的话,选择完整的行。
我需要搜索每一行以查看它是否是双精度数(具有“等级”>1),以及它本身是否不完整,但有一些完整的双精度数。 我现在解释一下:
- 并非'rank' = 1 的每一行都有日期(这很重要), 但其中一些有双打 ('rank'>1) 有一个日期。
- 并非每一行都有双精度。如果里面没有日期,也没关系。
所以,如果确实存在,我需要找到带有日期的双精度,并将其重写到排名为 1 的行(或删除不完整的第一行) 最后,我需要一个没有双打和尽可能多的日期的 DataFrame。
我的代码的迭代循环效率极低,但我不知道如何用矢量化或 .apply() 方法重写它:
def test_func(dataframe):
df = dataframe
df.iloc[0:0]
for i in range(0, dataframe.shape[0]):
if dataframe.iloc[i]['rank'] == 1:
temp_row = dataframe.iloc[i]
elif ((dataframe.iloc[i+1]['rank']>1)&
(pd.isna(dataframe.iloc[i]['date'])
&(~pd.isna(dataframe.iloc[i+1]['date'])))):
temp_row = dataframe.iloc[i+1]
df.loc[i] = temp_row
return df
希望能得到一些帮助!来自俄罗斯的爱xo。
【问题讨论】:
-
那么你的最终数据框应该只有 Rank 1s 吗? (要么是因为他们已经有了约会,要么是因为它是从 Rank > 1 带来的)我说得对吗?
-
我在最终 df 中排名下降,我只使用它们来帮助我对双打进行排序,但是,最重要的是找到并添加日期,如果它在排名 >1 的行中
标签: python pandas dataframe numpy vectorization