将数据框列中的列表应用到另一列

问题描述

我有一个数据框,其中一列中有一个整数列表,另一列中有一个整数。我想创建一个新列,其中包含以单个整数开头的字符串列表,并将每个列出的整数与其组合。

示例:

data = [[1,[2,3,4],[12,13,14]],[22,23,24]]]
df = pd.DataFrame(data,columns = ['A','B','C']) 
    
   A          B             C
0  1  [2,4]  [12,14]
1  2  [2,4]  [22,24]

C 列是我想使用 A 和 B 中的信息创建的示例。 这是我创建的一个函数来尝试这个:

def comb (lst,tid):
    nrng = []
    lsts = [str(s) for s in lst]
    tid = str(tid)
    for itm in lsts:
        lyr = tid + itm
        nrng.append(lyr)
    return nrng
comb(df['B'][0],df['A'][0])

如果我指定了行,那行得通,但我想将它应用到数据帧。我尝试了一些具有类似结果的事情。当我只需要 B 列时,它会遍历 A 列。

df['D'] = df.apply(comb,tid = df['A'],axis = 0)
df['D'] = comb(df['B'],df['A'])
df['D'] = [comb(s) for s in df['A']]

我只想通过应用函数(或任何其他更合适的技术)创建一个看起来像 C 列的 D 列

解决方法

我认为您可以在没有新函数的情况下连接它们。

df['C'] = [[str(a)+str(i) for i in b] for a,b in zip(df.A,df.B)]

更新:一定要先转换成str()。

,

你可以试试apply

df['C'] = df[['A','B']].apply(lambda x: [f'{x[0]}{i}' for i in x[1]],axis=1)

print(df['C'])
0    [12,13,14]
1    [22,23,24]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...