python - 如何合并/合并 Pandas 中的列?

标签 python pandas dataframe merge multiple-columns

我有一个包含 4 列的(示例)数据框:

data = {'A': ['a', 'b', 'c', 'd', 'e', 'f'],
    'B': [42, 52, np.nan, np.nan, np.nan, np.nan],  
    'C': [np.nan, np.nan, 31, 2, np.nan, np.nan],
    'D': [np.nan, np.nan, np.nan, np.nan, 62, 70]}
df = pd.DataFrame(data, columns = ['A', 'B', 'C', 'D'])

    A   B       C       D
0   a   42.0    NaN     NaN
1   b   52.0    NaN     NaN
2   c   NaN     31.0    NaN
3   d   NaN     2.0     NaN
4   e   NaN     NaN     62.0
5   f   NaN     NaN     70.0

我现在想将 B、C 和 D 列合并/合并到一个新的 E 列,如本例所示:

data2 = {'A': ['a', 'b', 'c', 'd', 'e', 'f'],
    'E': [42, 52, 31, 2, 62, 70]}
df2 = pd.DataFrame(data2, columns = ['A', 'E'])

    A   E
0   a   42
1   b   52
2   c   31
3   d   2
4   e   62
5   f   70

我发现了一个非常相似的问题 here但这会在 A 列的末尾添加合并的 B、C 和 D 列:

0      a
1      b
2      c
3      d
4      e
5      f
6     42
7     52
8     31
9      2
10    62
11    70
dtype: object

感谢您的帮助。

最佳答案

选项 1
使用 assigndrop

In [644]: cols = ['B', 'C', 'D']

In [645]: df.assign(E=df[cols].sum(1)).drop(cols, 1)
Out[645]:
   A     E
0  a  42.0
1  b  52.0
2  c  31.0
3  d   2.0
4  e  62.0
5  f  70.0

选项 2
使用赋值和 drop

In [648]: df['E'] = df[cols].sum(1)

In [649]: df = df.drop(cols, 1)

In [650]: df
Out[650]:
   A     E
0  a  42.0
1  b  52.0
2  c  31.0
3  d   2.0
4  e  62.0
5  f  70.0

选项 3 最近,我喜欢第三个选项。
使用 groupby

In [660]: df.groupby(np.where(df.columns == 'A', 'A', 'E'), axis=1).first() #or sum max min
Out[660]:
   A     E
0  a  42.0
1  b  52.0
2  c  31.0
3  d   2.0
4  e  62.0
5  f  70.0

In [661]: df.columns == 'A'
Out[661]: array([ True, False, False, False], dtype=bool)

In [662]: np.where(df.columns == 'A', 'A', 'E')
Out[662]:
array(['A', 'E', 'E', 'E'],
      dtype='|S1')

关于python - 如何合并/合并 Pandas 中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46563833/

相关文章:

python - 从通过 pandas 创建的 html 表中删除边框

r - 删除具有重复值的行并将 NA 作为单独的值包含在内

python - 在数据框中用 nan 替换特定值

python - 如何使用 to_html 将 pandas dataframe 转换为 html 时隐藏列名称

python pandas - 转换表

python - 在 PANDAS 中每第 n 行转置一列中的数据

python - Pandas 根据函数返回单独的 DataFrame 值

python - 使用 pip install --editable 更改 .egg-info 目录

python - 如何通过shell脚本编辑XML文件来更改所有数字,其中原始点除以1.3?

python - 我无法在 RIDE (ROBOT FRAMEWORK) 中运行简单的测试