逐行连接数据框上的行
concatenate rows on dataframe one by one
我有 2 个数据框
df1:
data type
0 a 1
1 b 1
2 c 1
3 d 1
4 e 1
df2:
data type
0 v 2
1 w 2
2 x 2
3 y 2
4 z 2
arr = [['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1]]
arr2 = [['v', 2], ['w', 2], ['x', 2], ['y', 2], ['z', 2]]
df1 = pd.DataFrame(arr, columns=['data', 'type'])
df2 = pd.DataFrame(arr2, columns=['data', 'type'])
我想连接并制作数据帧,就像在模式中打乱一样第一个是类型 1,第二个是类型 2 .....
预期输出:
data type
0 a 1
1 v 2
2 b 1
3 w 2
4 c 1
5 x 2
6 d 1
7 y 2
8 e 1
9 z 2
约束:如果例如 df1 有更多的行然后 df2 那么输出就像
data type
0 a 1
1 v 2
2 b 1
3 w 2
4 c 1
5 x 2
6 d 1
7 y 2
8 e 1
9 z 2
10 f 1
11 g 1
12 h 1
反之亦然。
一种方法是更改输入数据帧的索引。然后连接并按索引排序。这也将处理您的数据帧长度不匹配的情况。
df1.index = df1.index*2
df2.index = df2.index*2 + 1
res = pd.concat([df1, df2]).sort_index()
print(res)
data type
0 a 1
1 v 2
2 b 1
3 w 2
4 c 1
5 x 2
6 d 1
7 y 2
8 e 1
9 z 2
如果您需要在数据帧长度不一致时规范化索引,您可以使用 reset_index
作为最后一步:
res = res.reset_index(drop=True)
在两个数据帧中创建一个具有偶数和奇数索引的额外列,并对其进行连接和排序。它将保留两个数据帧的原始索引。
arr = [['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1]]
arr2 = [['v', 2], ['w', 2], ['x', 2], ['y', 2], ['z', 2]]
df1 = pd.DataFrame(arr, columns=['data', 'type'])
df2 = pd.DataFrame(arr2, columns=['data', 'type'])
df1['temp'] = range(0, 2*df1.shape[0], 2) # add even index
df2['temp'] = range(1, 2*df2.shape[0], 2) # add odd index
df = pd.concat([df1, df2]).sort_values('temp').drop('temp', axis=1)
print (df)
data type
0 a 1
0 v 2
1 b 1
1 w 2
2 c 1
2 x 2
3 d 1
3 y 2
4 e 1
4 z 2
我有 2 个数据框
df1:
data type
0 a 1
1 b 1
2 c 1
3 d 1
4 e 1
df2:
data type
0 v 2
1 w 2
2 x 2
3 y 2
4 z 2
arr = [['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1]]
arr2 = [['v', 2], ['w', 2], ['x', 2], ['y', 2], ['z', 2]]
df1 = pd.DataFrame(arr, columns=['data', 'type'])
df2 = pd.DataFrame(arr2, columns=['data', 'type'])
我想连接并制作数据帧,就像在模式中打乱一样第一个是类型 1,第二个是类型 2 .....
预期输出:
data type
0 a 1
1 v 2
2 b 1
3 w 2
4 c 1
5 x 2
6 d 1
7 y 2
8 e 1
9 z 2
约束:如果例如 df1 有更多的行然后 df2 那么输出就像
data type
0 a 1
1 v 2
2 b 1
3 w 2
4 c 1
5 x 2
6 d 1
7 y 2
8 e 1
9 z 2
10 f 1
11 g 1
12 h 1
反之亦然。
一种方法是更改输入数据帧的索引。然后连接并按索引排序。这也将处理您的数据帧长度不匹配的情况。
df1.index = df1.index*2
df2.index = df2.index*2 + 1
res = pd.concat([df1, df2]).sort_index()
print(res)
data type
0 a 1
1 v 2
2 b 1
3 w 2
4 c 1
5 x 2
6 d 1
7 y 2
8 e 1
9 z 2
如果您需要在数据帧长度不一致时规范化索引,您可以使用 reset_index
作为最后一步:
res = res.reset_index(drop=True)
在两个数据帧中创建一个具有偶数和奇数索引的额外列,并对其进行连接和排序。它将保留两个数据帧的原始索引。
arr = [['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1]]
arr2 = [['v', 2], ['w', 2], ['x', 2], ['y', 2], ['z', 2]]
df1 = pd.DataFrame(arr, columns=['data', 'type'])
df2 = pd.DataFrame(arr2, columns=['data', 'type'])
df1['temp'] = range(0, 2*df1.shape[0], 2) # add even index
df2['temp'] = range(1, 2*df2.shape[0], 2) # add odd index
df = pd.concat([df1, df2]).sort_values('temp').drop('temp', axis=1)
print (df)
data type
0 a 1
0 v 2
1 b 1
1 w 2
2 c 1
2 x 2
3 d 1
3 y 2
4 e 1
4 z 2