当前位置: 首页 > 知识库问答 >
问题:

如何用不同的标记分隔符连接多个Pandas数据帧列?

刘博文
2023-03-14

我正在尝试用不同的令牌连接多个Pandas DataFrame列。

例如,我的数据集如下所示:

dataframe = pd.DataFrame({'col_1' : ['aaa','bbb','ccc','ddd'], 
                          'col_2' : ['name_aaa','name_bbb','name_ccc','name_ddd'], 
                          'col_3' : ['job_aaa','job_bbb','job_ccc','job_ddd']})
    features
0   aaa <0> name_aaa <1> job_aaa
1   bbb <0> name_bbb <1> job_bbb
2   ccc <0> name_ccc <1> job_ccc
3   ddd <0> name_ddd <1> job_ddd

我不想修改原始的DataFrame,所以创建了两个新的DataFrame:

features_df = pd.DataFrame()
final_df    = pd.DataFrame()
for iters in range(len(dataframe.columns)):
    features_df[dataframe.columns[iters]] = dataframe[dataframe.columns[iters]] + ' ' + "<{}>".format(iters)
final_df['features'] = features_df[features_df.columns].agg(' '.join, axis=1)

有一个问题,我面临,它是添加<2>最后,但我想要像上面的输出,而且这不是熊猫的方式来做这个任务,我如何使它更有效率?

共有1个答案

郦磊
2023-03-14
from itertools import chain

dataframe['features'] = dataframe.apply(lambda x: ''.join([*chain.from_iterable((v, f' <{i}> ') for i, v in enumerate(x))][:-1]), axis=1)

print(dataframe)

打印:

  col_1     col_2    col_3                      features
0   aaa  name_aaa  job_aaa  aaa <0> name_aaa <1> job_aaa
1   bbb  name_bbb  job_bbb  bbb <0> name_bbb <1> job_bbb
2   ccc  name_ccc  job_ccc  ccc <0> name_ccc <1> job_ccc
3   ddd  name_ddd  job_ddd  ddd <0> name_ddd <1> job_ddd
 类似资料:
  • 我有3个CSV文件。每个数据框都有第一列作为人的(字符串)名称,而每个数据框中的所有其他列都是该人的属性。 如何将所有三个CSV文档“连接”在一起,创建一个单个CSV,每行都具有该人字符串名称的每个唯一值的所有属性? Pandas中的函数指定我需要一个多索引,但是我对分层索引方案与基于单个索引进行连接有什么关系感到困惑。

  • 有没有一种方法可以将下面的两个数据流连接起来,这样: 我将有一个带有标题的新数据帧: 时间戳调整的关闭reportedEPS estimatedEPS 并且reportedEPS和estimatedEPS将根据以下值保持不变: 时间戳:1月1日至3月31日,4月1日至6月30日,7月1日至9月30日,10月1日至12月31日? 2个数据流: https://gyazo.com/38B50A3D7E

  • df1有每月时间索引,df2有季度时间索引。df1和df2有不同的行数和列数,我想:(1)并排连接它们并保持它们的索引。(2)输出到excel文件。 我尝试过pd.concat,但是这种方法连接基于我不想要的数据帧索引之一的数据帧 excel中的预期结果:

  • 在bash中,如何将函数的参数连接到单个字符串中? 分隔符是固定的,不是空格(因此不是我想要的)。这里使用作为示例。

  • 我的问题是:有没有一个分析器能够检测标记周围的分隔符(在我们的示例中),或者有没有一个分析器能够检测多字结构? 恐怕我们必须创建自己的分析器,但我不太知道该从哪里开始。

  • 我有两个不同列数和行数的CSV文件。第一个CSV文件有M列和N行,第二个文件有H列和G行。一些列具有相同的名称。 null 另外,如果两个CSV文件有两个数据帧,并希望这样做,例如,如果我将第一个CSV加载到中,将第二个加载到中,然后希望合并到,类似于上面的示例。