将值插入随机行

问题描述 投票:2回答:2

我有一个数据框如下。

D1 = pd.DataFrame({'a': [15, 22, 107, 120],
                   'b': [25, 21, 95, 110]})

我试图在列'b'中随机添加两行以获得下面的效果。在每种情况下,插入的0在这种情况下将行向下移动一个。

D1 = pd.DataFrame({'a': [15, 22, 107, 120, 0, 0],
                   'b': [0, 25, 21, 0, 95, 110]})

我所看到的一切都是关于插入整个列而不是单个行。

pandas random
2个回答
3
投票

以下是使用numpy.random.randintnumpy.insert实现此目的的一种可能方法:

import numpy as np

n = 2
rand_idx = np.random.randint(0, len(D1), size=n)

# Append 'n' rows of zeroes to D1
D2 = D1.append(pd.DataFrame(np.zeros((n, D1.shape[1])), columns=D1.columns, dtype=int), ignore_index=True)

# Insert n zeroes into random indices and assign back to column 'b'
D2['b'] = np.insert(D1['b'].values, rand_idx, 0)
print(D2)

     a    b
0   15   25
1   22    0
2  107    0
3  120   21
4    0   95
5    0  110

2
投票

使用numpy.insert与设定位置 - 对于a随机和b由原始DataFrame的长度:

n = 2
new = np.zeros(n, dtype=int)
a = np.insert(D1['b'].values, len(D1), new)
b = np.insert(D1['a'].values, np.random.randint(0, len(D1), size=n), new)

#python 0.24+
#a = np.insert(D1['b'].to_numpy(), len(D1), new)
#b = np.insert(D1['a'].to_numpy(), np.random.randint(0, len(D1), size=n), new)

df = pd.DataFrame({'a':a, 'b': b})
print (df)
     a    b
0   25    0
1   21   15
2   95   22
3  110    0
4    0  107
5    0  120
© www.soinside.com 2019 - 2024. All rights reserved.