python-3.x - 将列的值复制到熊猫中的下几行
问题描述
我有一个数据框,其中有一个唯一列以及多个列,如下所示:
UniqueNumber Values
0 69444108688 500
1 66023511069 100
2 53313124505 200
3 95336385161 300
4 53923124505 400
5 96498947724 250
6 38933995601 430
7 13182151675 595
8 68184277619 792
9 87329074618 800
数据框大小约为 1000,我试图抽取少量随机样本并复制“UniqueNumber”列的每四个连续值的值,其值位于每第 5 个位置。我的预期输出如下数据框
UniqueNumber Values
0 69444108688 500
1 69444108688 100
2 69444108688 200
3 69444108688 300
4 69444108688 400
5 96498947724 250
6 96498947724 430
7 96498947724 595
8 96498947724 792
9 96498947724 800
我正在通过以下方式尝试这个。它将列数据类型更改为浮点类型。我正在寻找在熊猫中实现这一目标的任何有效方法。
下面是我的代码
df_sample = df.sample(100)
unique_vals = df_sample['UniqueNumber'].tolist()
for i in range(0,len(unique_vals) - 1, 1):
if i%5 !=0 :
unique_vals[i] = np.nan
df_sample['UniqueNumber'] = unique_vals
df_sample['UniqueNumber'].ffill(axis = 0, inplace = True)
解决方案
如果 index 是默认值RangeIndex
,您可以使用整数除法5
,然后使用GroupBy.transform
with GroupBy.first
:
df['UniqueNumber'] = df.groupby(df.index // 5)['UniqueNumber'].transform('first')
或者,如果一些通用索引值创建辅助数组:
df['UniqueNumber'] = df.groupby(np.arange(len(df)) // 5)['UniqueNumber'].transform('first')
print (df)
UniqueNumber Values
0 69444108688 500
1 69444108688 100
2 69444108688 200
3 69444108688 300
4 69444108688 400
5 96498947724 250
6 96498947724 430
7 96498947724 595
8 96498947724 792
9 96498947724 800
另一个想法是将具有缺失值的浮点值转换为整数:
m = np.arange(len(df)) % 5 == 0
df['UniqueNumber'] = df['UniqueNumber'].where(m).astype('Int64').ffill().astype('int64')
print (df)
UniqueNumber Values
0 69444108688 500
1 69444108688 100
2 69444108688 200
3 69444108688 300
4 69444108688 400
5 96498947724 250
6 96498947724 430
7 96498947724 595
8 96498947724 792
9 96498947724 800
推荐阅读
- r - 如何通过 R 中的寓言动态回归获得 CV 预测
- spring - AWS Lambda 平台上 Spring Cloud 函数中的全局异常处理
- amazon-web-services - 如果它位于 aws vpc 的私有子网中,是否可以访问 Jenkins GUI?
- excel - 遍历 Evaluate Excel VBA
- android - 移动 Mapbox 时动画符号闪烁
- javascript - 当我向我的机器人发送 DM 时,事件 messageCreate 没有触发/发射(discord.js v13)
- c# - C#/我通过随机选择下一个单元格从字符串数组中填充 DataGridView,并且不想再次选择使用过的单元格
- reactjs - Reactjs Material-Table 过滤日期和默认列
- regex - 正则表达式 Word 至少 1 个数字和至少 2 个字母
- linux - RIP 在自修改 shellcode 中停留在 inc 指令