如何复制数据帧以匹配其他数据帧的长度?

2024-03-29 13:11:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设以下数据帧:

df1型:

a    
10.
20.
30.
40.
50.
60.
70.
80.
90.
100.
110.
120.

df2型:

b
1.
2.

df3公司:

b
1.
2.
3.

知道了len(df1.values) % len(df2.values) == 0,我想用df1的每个元素除以df2的每个元素,在重复了df2尽可能多的次数以适应df11的长度之后,在本例中就是这样

结果(df1,df2):

a    
10.
10.
30.
20.
50.
30.
70.
40.
90.
50.
110.
60.

结果(df1,df3):

a    
10.
10.
10.
40.
25.
20.
70.
40.
30.
100.
55.
40.

实现这一点最干净的方法是什么,最好不经过numpy?你知道吗


Tags: 数据方法numpy元素len公司次数df1
2条回答

我会的

n=len(df1)//len(df2)
df1.a/np.tile(df2.b,n+1)[:len(df1)]
Out[871]: 
0      10.0
1      10.0
2      30.0
3      20.0
4      50.0
5      30.0
6      70.0
7      40.0
8      90.0
9      50.0
10    110.0
11     60.0
Name: a, dtype: float64

这里有一种使用^{}的方法,新数组将填充原始数组的副本,直到它符合指定的长度:

df1['a'] /= np.resize(df2.b.values, df1.shape[0])

      a
0    10.0
1    10.0
2    30.0
3    20.0
4    50.0
5    30.0
6    70.0
7    40.0
8    90.0
9    50.0
10  110.0
11   60.0

或使用^{}

df1['a'] /= pd.np.tile(df2.b, df1.shape[0]//df2.shape[0])

相关问题 更多 >