如何在不改变列的情况下将数据框架中所有行的值串联成一条行?[英] How to concatenate values of all rows in a dataframe into a single row without altering the columns?

本文是小编为大家收集整理的关于如何在不改变列的情况下将数据框架中所有行的值串联成一条行?的处理方法,想解了如何在不改变列的情况下将数据框架中所有行的值串联成一条行?的问题怎么解决?如何在不改变列的情况下将数据框架中所有行的值串联成一条行?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个看起来像:

的数据框输入
  col1 col2 col3
0    3    1  NaN
1  NaN    7    8

如何崩溃所有行,同时将数据与', '>?

串联在一起时

所需的数据框架输出:

  col1  col2 col3
0    3  1, 7    8

示例输入代码:

import pandas as pd
import numpy as np


d = {'col1': ["3", np.nan], 'col2': ["1", "7"], 'col3': [np.nan, "8"]}
df = pd.DataFrame(data=d)

推荐答案

agg + dropna + str.join想到.

df.agg(lambda x: ', '.join(x.dropna())).to_frame().T

  col1  col2 col3
0    3  1, 7    8

还有其他解决方案,我的同龄人会为您找到它们:)

其他推荐答案

pd.DataFrame(
    [[
        ', '.join(map(str, map(int, filter(pd.notna, c))))
        for c in zip(*df.values)
    ]], columns=df.columns
)

  col1  col2 col3
0    3  1, 7    8

其他推荐答案

获得所需的方法是创建与旧数据框架相同列的新数据框架,并使用所需数据填充第一个索引.在您的情况下,您所需的数据将是每列的列表,并由', '连接,并删除了NaN值:

new_df = pd.DataFrame(columns=df.columns)

for col in df.columns:
    new_df.loc[0, col] = ', '.join(df[col].dropna().tolist())

>>> new_df
  col1  col2 col3
0    3  1, 7    8

本文地址:https://www.itbaoku.cn/post/1728035.html