将数据框列中的列表应用于另一列
Applying a list in a dataframe column to another column
我有一个数据框,其中一列是整数列表,另一列是一个整数。我想创建一个新列,其中包含以单个整数开头的字符串列表,并将每个列出的整数与其组合。
示例:
data = [[1, [2,3,4], [12,13,14]], [2, [2,3,4], [22,23,24]]]
df = pd.DataFrame(data, columns = ['A', 'B', 'C'])
A B C
0 1 [2, 3, 4] [12, 13, 14]
1 2 [2, 3, 4] [22, 23, 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]
我有一个数据框,其中一列是整数列表,另一列是一个整数。我想创建一个新列,其中包含以单个整数开头的字符串列表,并将每个列出的整数与其组合。
示例:
data = [[1, [2,3,4], [12,13,14]], [2, [2,3,4], [22,23,24]]]
df = pd.DataFrame(data, columns = ['A', 'B', 'C'])
A B C
0 1 [2, 3, 4] [12, 13, 14]
1 2 [2, 3, 4] [22, 23, 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]