python - Pandas 拆分和追加

标签 python pandas

我是 pandas 的新手,我不知道如何解决以下问题。

我有以下数据框:

    0   1   2   3   4   5
0   a   1   d   4   g   7
1   b   2   e   5   h   8
2   c   3   f   6   i   9

我必须变成以下内容:

a   1
b   2
c   3
d   4
e   5
f   6
g   7
h   8
i   9

最佳答案

试试这个:

data = {
    0: pd.concat(df[c] for c in df.columns[0::2]).reset_index(drop=True),
    1: pd.concat(df[c] for c in df.columns[1::2]).reset_index(drop=True),
}
df = pd.DataFrame(data)

输出:

>>> df
   0  1
0  a  1
1  b  2
2  c  3
3  d  4
4  e  5
5  f  6
6  g  7
7  h  8
8  i  9

说明

首先,我们选择每个偶数列并将它们分组在一起:

>>> df
   0  1  2  3  4  5
0  a  1  d  4  g  7
1  b  2  e  5  h  8
2  c  3  f  6  i  9

>>> df.columns
Index(['0', '1', '2', '3', '4', '5'], dtype='object')

>>> even_col_names = df.columns[0::2] # slice syntax: start:stop:step (start with the 0th item, end with the <unspecified> (last) item, select every 2 items)
Index(['0', '2', '4'], dtype='object')

>>> even_cols = df[even_col_names]
>>> even_cols
0  2  4
0  a  d  g
1  b  e  h
2  c  f  i

然后,我们选择每个奇数列并将它们分组在一起:

>>> odd_col_names = df.columns[1::2] # start with the 1st item, select every 2 items
>>> odd_col_names
Index(['1', '3', '5'], dtype='object')

>>> odd_cols = df[odd_col_names]
>>> odd_cols
   1  3  5
0  1  4  7
1  2  5  8
2  3  6  9

然后,我们将偶数列连接成一列:

>>> even_cols_list = [df[c] for c in even_col_names]
>>> even_cols_list
[0    a
 1    b
 2    c
 Name: 0, dtype: object,
 0    d
 1    e
 2    f
 Name: 2, dtype: object,
 0    g
 1    h
 2    i
 Name: 4, dtype: object]
 
>>> even_col = pd.concat(even_cols_list).reset_index(drop=True)
>>> even_col
0    a
1    b
2    c
3    d
4    e
5    f
6    g
7    h
8    i
dtype: object

然后我们将奇数列连接成一列:

>>> odd_cols_list = [df[c] for c in odd_col_names]
>>> odd_cols_list
[0    1
 1    2
 2    3
 Name: 1, dtype: int64,
 0    4
 1    5
 2    6
 Name: 3, dtype: int64,
 0    7
 1    8
 2    9
 Name: 5, dtype: int64]
 
>>> odd_col = pd.concat(odd_cols_list).reset_index(drop=True)
>>> odd_col
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
dtype: int64

最后,我们创建一个包含这两列的新数据框:

>>> df = pd.DataFrame({0: even_col, 1: odd_col})
>>> df
   0  1
0  a  1
1  b  2
2  c  3
3  d  4
4  e  5
5  f  6
6  g  7
7  h  8
8  i  9

关于python - Pandas 拆分和追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70310155/

相关文章:

python - Django 多表继承与单独的(相同的)表没有指针

python - Pandas 数据框,NAN 上的 cumsum 重置

Python - 将列附加到 DataFrame 列表

python - 将字符串/对象更改为持续时间和总和

python - Pandas merge_asof : incompatible merge keys [datetime64[ns, 美国/东部] 和 dtype ('<M8[ns]' )

python - 合并 100 多个 CSV 文件时,如果 "usecol"中不存在 nan,如何填充该列?

python - Pandas :逻辑和两个数据框

python - 正则表达式字符匹配计数器

python - 对于这个特定的任务来说,字典或元组列表会更有效吗?

python - 如何在 Synology 上安装 Pip 3,然后安装 Python Lib MySQLdb