我想按类型列对ID进行分组,并在分组股票上应用一个函数,该函数返回分组股票的值列不是NaN的第一行,并将其复制到单独的数据框中
到目前为止,我得到了以下信息:
dummy data:
df1 = {'Date': ['04.12.1998','05.12.1998','06.12.1998','04.12.1998','05.12.1998','06.12.1998'],
'Type': [1,1,1,2,2,2],
'Value': ['NaN', 100, 120, 'NaN', 'NaN', 20]}
df2 = pd.DataFrame(df1, columns = ['Date', 'Type', 'Value'])
print (df2)
Date Type Value
0 04.12.1998 1 NaN
1 05.12.1998 1 100
2 06.12.1998 1 120
3 04.12.1998 2 NaN
4 05.12.1998 2 NaN
5 06.12.1998 2 20
import pandas as pd
selectedStockDates = {'Date': [], 'Type': [], 'Values': []}
selectedStockDates = pd.DataFrame(selectedStockDates, columns = ['Date', 'Type', 'Values'])
first_valid_index = df2[['Values']].first_valid_index()
selectedStockDates.loc[df2.index[first_valid_index]] = df2.iloc[first_valid_index]
上面的代码应该适用于第一个id,但我很难将其应用于数据帧中的所有id。有人知道怎么做吗
只需使用
groupby
和first
,但需要确保空值是np.nan
,而不是像示例数据中那样的字符串:让我们
mask
数据帧中的值,其中Value
列中的值为NaN
,然后groupby
数据帧位于Type
并使用first
进行聚合:相关问题 更多 >
编程相关推荐