我在Python Pandas中有一个Data Frame,如下所示:
输入数据:
df = pd.DataFrame({
'id' : [999, 999, 999, 185, 185, 185, 44, 44, 44],
'target' : [1, 1, 1, 0, 0, 0, 1, 1, 1],
'event_date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-01', '2023-01-02', '2023-01-03', '2023-01-01', '2023-01-02', '2023-01-03'],
'event1': [1, 6, 11, 16, np.nan, 22, 74, 109, 52],
'event2': [2, 7, np.nan, 17, 22, np.nan, np.nan, 10, 5],
'event3': [3, 8, 13, 18, 23, np.nan, 2, np.nan, 99],
'event4': [4, 9, np.nan, np.nan, np.nan, 11, 8, np.nan, np.nan],
'event5': [5, np.nan, 15, 20, 25, 1, 1, 3, np.nan]
})
# Wypełnienie brakujących wartości zerami
df = df.fillna(0)
df
字符串
x1c 0d1x的数据
要求:
我的真实的数据集当然有更多的数据,但我需要根据以下要求将我的数据集分为两个单独的数据集(训练和测试):
1.对于训练数据集,我需要从输入数据集中获取70%的唯一ID
1.对于测试数据集,我需要从我的输入数据集中获取30%的唯一ID
1.对于每个新数据集,我需要为每个id获取所有行,请注意每个id在我的输入数据集中具有相同的行数**(对于某些id,我们只获取2行,对于其他id,我们获取3行,总是获取给定id的所有行)**
所需结果的示例(当然在真实的数据中应该是70% /30%的唯一ID比例):
- 训练数据集:*
df = pd.DataFrame({
'id' : [999, 999, 999, 185, 185, 185],
'target' : [1, 1, 1, 0, 0, 0],
'event_date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-01', '2023-01-02', '2023-01-03'],
'event1': [1, 6, 11, 16, np.nan, 22],
'event2': [2, 7, np.nan, 17, 22, np.nan],
'event3': [3, 8, 13, 18, 23, np.nan],
'event4': [4, 9, np.nan, np.nan, np.nan, 11],
'event5': [5, np.nan, 15, 20, 25, 1]
})
df = df.fillna(0)
df
型
- 测试数据集:*
df = pd.DataFrame({
'id' : [44, 44, 44],
'target' : [1, 1, 1],
'event_date': ['2023-01-01', '2023-01-02', '2023-01-03'],
'event1': [74, 109, 52],
'event2': [ np.nan, 10, 5],
'event3': [2, np.nan, 99],
'event4': [8, np.nan, np.nan],
'event5': [1, 3, np.nan]
})
# Wypełnienie brakujących wartości zerami
df = df.fillna(0)
df
型
1条答案
按热度按时间bzzcjhmw1#
使用
drop_duplicates
,sample
删除重复项,然后使用isin
构建掩码来分割数据:字符串
使用
set
的变体:型
输出示例:
型