Python:根据具有列表的列将列连接起来

Bartek Nowakowski

我有一个DataFrame像下面:

df
      A    B     C    D    E    key
0  test    Z  10.0    a    a  10111
1  test    A  10.0    a    a  10111
2  test    x   2.0    a    b  11010
3  test    5  12.0    b    b  10100
4  test    x   5.0    c    b  11000
5  test    2  14.0    g    c  10111

我需要得到的是将所有字符串相应地连接到keycolumn:

  • key在位置[0]处为col Akey在位置[1]处为col B,依此类推...
  • 每个1都用于拍摄,每个0都用于跳过列

结果应如下所示:

      A    B     C    D    E    key     key_val
0  test    Z  10.0    a    a  10111  test10.0aa
1  test    A  10.0    a    a  10111  test10.0aa
2  test    x   2.0    a    b  11010      testxa
3  test    5  12.0    b    b  10100    test12.0
4  test    x   5.0    c    b  11000       testx
5  test    2  14.0    g    c  10111  test14.0gc

到目前为止,我所做的是-创建了带有以下内容的key_list列:

df['key_list'] = df['key'].apply(lambda x: list(str(x)))

df
      A  B     C  D  E    key         key_list
0  test  Z  10.0  a  a  10111  [1, 0, 1, 1, 1]
1  test  A  10.0  a  a  10111  [1, 0, 1, 1, 1]
2  test  x   2.0  a  b  11010  [1, 1, 0, 1, 0]
3  test  5  12.0  b  b  10100  [1, 0, 1, 0, 0]
4  test  x   5.0  c  b  11000  [1, 1, 0, 0, 0]
5  test  2  14.0  g  c  10111  [1, 0, 1, 1, 1]

下一步,我尝试了此操作(我想乘以1或0以包含或排除字符串):

df.apply((df['A'].astype(str) * df['key_list'][0]) +
         (df['B'].astype(str) * df['key_list'][1]) +
         (df['C'].astype(str) * df['key_list'][2]) +
         (df['D'].astype(str) * df['key_list'][3]) +
         (df['E'].astype(str) * df['key_list'][4]), axis=1)

但这似乎是错误的主意:ValueError: operands could not be broadcast together with shapes (6,) (5,)我遵循字符串连接的常规做法,只是需要额外的步骤:

df['A'].astype(str) + df['B'].astype(str) + df['C'].astype(str) + df['D'].astype(str) + df['E'].astype(str)
耶斯列尔

想法是将key转换为掩码,然后将不匹配项替换为空字符串DataFrame.where并求和join

c = ['A','B','C','D','E']

L = [list(str(x)) for x in df['key']]
m = pd.DataFrame(L, columns=c, index=df.index).fillna(0).astype(int).astype(bool)
print (m)
      A      B      C      D      E
0  True  False   True   True   True
1  True  False   True   True   True
2  True   True  False   True  False
3  True  False   True  False  False
4  True   True  False  False  False
5  True  False   True   True   True

df['key_val'] = df[c].where(m, '').astype(str).sum(axis=1)
print (df)
      A  B     C  D  E    key     key_val
0  test  Z  10.0  a  a  10111  test10.0aa
1  test  A  10.0  a  a  10111  test10.0aa
2  test  x   2.0  a  b  11010      testxa
3  test  5  12.0  b  b  10100    test12.0
4  test  x   5.0  c  b  11000       testx
5  test  2  14.0  g  c  10111  test14.0gc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Dev

将具有行和列的两个表连接起来并求和

来自分类Dev

如何在python中将具有相同列值的行连接起来?

来自分类Dev

Excel将整个列连接起来

来自分类Dev

Python数据框将列连接起来并输出到嵌套行

来自分类Java

通过将具有相同名称的键的列表连接起来,组合多个Map <String,List>结构

来自分类Dev

在python中将具有不同列数的数据帧连接起来后,如何不让列按字母顺序排序

来自分类Dev

在SQL查询中,如何通过标识将具有不同类型的表的所有列及其值连接起来?

来自分类Dev

根据条件将不同表中的列连接起来

来自分类Dev

Python / Pandas:将两个具有多重索引的数据框连接起来

来自分类Dev

使用Python Pandas将两个具有范围条件的表连接起来

来自分类Dev

Python将字符串与具有转义字符的字符串变量连接起来

来自分类Dev

将具有空单元格的跳过行连接起来

来自分类Dev

将具有重叠索引但永不重叠值的Pandas DataFrames连接起来

来自分类Dev

是否有任何haskell函数将列表与分隔符连接起来?

来自分类Dev

在CSS3中将点与有序列表连接起来

来自分类Dev

TSQL如何将分组表中的联接表中的列连接起来

来自分类Dev

将行与列连接起来以创建垂直表

来自分类Dev

给定一列中相同的值,将剩余的行连接起来?

来自分类Dev

如何将一列中的值连接起来?

来自分类Dev

将R中用逗号分隔的一列字符串连接起来

来自分类Dev

将多个熊猫列与回车符和空白行连接起来

来自分类Dev

将列名称与R中的列数据连接起来(使用data.table)

来自分类Dev

将CSV文件中的数据与列中的重叠数据连接起来

来自分类Dev

如何根据数量将java8中列表中的字符串元素连接起来?

来自分类Dev

如何在pandas数据框中拆分重复的列,以将其与具有新索引的原始列连接起来?

来自分类Dev

熊猫根据另一个中的连续值将一列中的字符串连接起来

来自分类Dev

如何将Excel中的日期列与保持原始日期完整的另一列连接起来?

来自分类Dev

在另一列的值唯一之后,将一列中的值连接起来

来自分类Dev

将具有2个where子句的3个表连接起来获得空结果

TOP 榜单

热门标签

归档