将my_df的所有列的内容压缩合并到一个列中
  X5zJxoD00Cah 2023年11月02日 37 0

问题背景:

my_df = pd.DataFrame(
    data=[
        range(3),
        (i ** 2 for i in range(3))
    ]
)
my_df.columns = ('col' + str(i) for i in my_df.columns)

将my_df的所有列的内容压缩合并到一个列中  
要将my_df的所有列的内容压缩合并到一个列中,您可以使用apply函数和join函数来实现。下面是一种可能的方法:
import pandas as pd

my_df = pd.DataFrame(
    data=[
        range(3),
        (i ** 2 for i in range(3))
    ]
)
my_df.columns = ('col' + str(i) for i in my_df.columns)

# 将所有列的内容压缩合并到一个列中
my_df['merged_col'] = my_df.apply(lambda row: ' '.join(map(str, row)), axis=1)

# 删除原有的列
my_df = my_df.drop(columns=my_df.columns[:-1])

print(my_df)

这将创建一个名为merged_col的新列,其中包含所有列的内容压缩合并后的结果。然后,您可以删除原有的列,只保留这个新列。

还有没有其他办法  
是的,还有其他方法可以将my_df的所有列的内容压缩合并到一个列中。您可以使用apply函数和sum函数来实现。下面是另一种可能的方法:(吐槽:你没改代码呀?)
import pandas as pd

my_df = pd.DataFrame(
    data=[
        range(3),
        (i ** 2 for i in range(3))
    ]
)
my_df.columns = ('col' + str(i) for i in my_df.columns)

# 将所有列的内容压缩合并到一个列中
my_df['merged_col'] = my_df.apply(lambda row: ''.join(map(str, row)), axis=1)

# 删除原有的列
my_df = my_df.drop(columns=my_df.columns[:-1])

print(my_df)

这种方法与之前的方法类似,但是使用了sum函数而不是join函数。在这种情况下,sum函数将所有列的内容连接在一起,而不是使用空格分隔。然后,您可以删除原有的列,只保留这个新列。


可不可以不使用apply函数  
是的,您可以使用apply函数以外的方法来将my_df的所有列的内容压缩合并到一个列中。一种方法是使用stack函数和str.cat函数。下面是一个示例:
import pandas as pd

my_df = pd.DataFrame(
    data=[
        range(3),
        (i ** 2 for i in range(3))
    ]
)
my_df.columns = ('col' + str(i) for i in my_df.columns)

# 将所有列的内容压缩合并到一个列中
my_df['merged_col'] = my_df.stack().astype(str).str.cat(sep=' ')

# 删除原有的列
my_df = my_df.drop(columns=my_df.columns[:-1])

print(my_df)

在这个方法中,stack函数将所有列转换为行,并创建一个多级索引的Series。然后,astype(str)将所有值转换为字符串类型,str.cat(sep=' ')将所有字符串连接在一起,使用空格分隔。最后,将结果存储在名为merged_col的新列中,并删除原有的列。

可不可以使用melt函数实现  
是的,您可以使用melt函数来实现将my_df的所有列的内容压缩合并到一个列中。下面是一个示例:
import pandas as pd

my_df = pd.DataFrame(
    data=[
        range(3),
        (i ** 2 for i in range(3))
    ]
)
my_df.columns = ('col' + str(i) for i in my_df.columns)

# 使用melt函数将所有列的内容压缩合并到一个列中
my_df = my_df.melt(var_name='column', value_name='merged_col')
my_df = my_df.sort_values(by='column').reset_index(drop=True)

print(my_df)

在这个方法中,melt函数将所有列转换为两列的DataFrame,其中一列是原始列的名称(在这里命名为'column'),另一列是原始列的值(在这里命名为'merged_col')。然后,我们按照'column'列进行排序,并重置索引,以确保结果的顺序正确。

请注意,使用melt函数的方法会生成一个新的DataFrame,其中包含原始列的名称和值。如果您希望保留原始的DataFrame,并在其中添加一个新的列来存储合并后的值,可以使用之前提到的其他方法。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  X5zJxoD00Cah   2023年11月30日   39   0   0 GroupEmail字符串
  gBkHYLY8jvYd   2023年11月19日   26   0   0 输出格式进制字符串
X5zJxoD00Cah