如何将数据帧行拆分为多个数据帧?

时间:2021-03-09 10:26:36

标签: python python-3.x pandas dataframe numpy

我有一个数据框:

    0   1   2   3   4   5  6
0   A   B   C   D   E   F  G
1   H   I   J   K   L   M  N
2   O   P   Q   R   S   T  U
3   V   W   X   Y   Z

我想在随机条件下将每一行分成多行(可以是任何条件):

例如

df['2'],df['4],df['6]
df['0'],df['3']
df['1'],df['5']

在这种情况下,应为输入数据框中的每一行重复这三行。

预期输出:

C   E   G
A   D
B   F
J   L   N
H   K
I   M
Q   S   U
O   R
P   T
X   Z
V   Y
W
   #should repeat for other rows too

标题不是必需的,或者我可以在转换为 csv 时忽略它们。

1 个答案:

答案 0 :(得分:1)

您可以在列表中指定列名,然后在列表理解中对其进行过滤并将列转换为默认的range列名,按DataFrame.set_axis,按concat连接,按{{3}排序},替换缺失值并创建默认索引:

vals = [['2','4','6'], ['0','3'], ['1','5']]

L = [df.loc[:, x].set_axis(range(len(x)), axis=1) for x in vals]
df = pd.concat(L).sort_index(kind='mergesort').fillna('').reset_index(drop=True)
print (df)
    0  1  2
0   C  E  G
1   A  D   
2   B  F   
3   J  L  N
4   H  K   
5   I  M   
6   Q  S  U
7   O  R   
8   P  T   
9   X  Z   
10  V  Y   
11  W