有两个名为df 1和d2的 Dataframe ,它们看起来完全相同,索引为1到n(在示例1-2中)。
df1 = pd.DataFrame({
'Fruit': ['Apple', 'Pineapple', 'Apple', 'Pineapple'],
'Indices': [1, 1, 2, 2],
'Value': [10, 20, 30, 40]
})
df2 = pd.DataFrame({
'Fruit': ['Apple', 'Pineapple', 'Apple', 'Pineapple'],
'Indices': [1, 1, 2, 2],
'Value': [50, 60, 70, 80]
})
我有第三个 Dataframe ,它的大小正好是它的两倍,索引从1到2*n。
df3 = pd.DataFrame({
'Fruit': ['Apple', 'Pineapple', 'Apple', 'Pineapple', 'Apple', 'Pineapple', 'Apple', 'Pineapple'],
'Indices': [1, 1, 2, 2, 3, 3, 4, 4],
'Value': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]
})
我想以一种方式填充df 3,对于每个“水果”,它以随机打乱的顺序从df 1和df 2的所有元素中填充值。
所以对于“苹果”,一个人会有10,30,50和70可用,对于“菠萝”,它会是20,40,60,80,但两者都是 Shuffle 。
结果可能如下所示:
df3 = pd.DataFrame({
'Fruit': ['Apple', 'Pineapple', 'Apple', 'Pineapple', 'Apple', 'Pineapple', 'Apple', 'Pineapple'],
'Indices': [1, 1, 2, 2, 3, 3, 4, 4],
'Value': [10, 80, 30, 60, 70, 40, 50, 20]
})
但当然也像这样(或任何其他随机的满足水果排序条件)
df3 = pd.DataFrame({
'Fruit': ['Apple', 'Pineapple', 'Apple', 'Pineapple', 'Apple', 'Pineapple', 'Apple', 'Pineapple'],
'Indices': [1, 1, 2, 2, 3, 3, 4, 4],
'Value': [30, 60, 70, 80, 10, 40, 50, 20]
})
有没有更聪明的办法?
我知道我可以通过loc选择正确的数据,并且在pandas中有一个采样方法,但是这一切是如何合并的呢?
3条答案
按热度按时间um6iljoc1#
您可以使用
merge
。使用此方法,df1
和df2
中的所有值都将被分配而不会重复:输出:
另一种方式
(but下面的两个方法不保证值是唯一的)
如果你想保持秩序:
flseospp2#
不知道你在找什么,但也许这对你有帮助:
结果:
hwamh0ep3#
通过使用由
df1
和df2
列值组合而成的 fruits Map:样本
df3
: