问题描述
我需要基于一个现有的 2 列创建 2 个新列。我正在尝试使用 1 个单独的应用函数而不是 2 个单独的应用函数来做到这一点。 例如初始Df如下:
https://myblog.com/?api&value1=62.234&value2=keyword1,keyword2,keyword3,keyword4&value3=565
接下来我尝试使用以下方法创建 2 个新列:
ID1 ID2
0 1 11
1 2 12
2 3 13
3 4 14
4 5 15
5 6 16
6 7 17
7 8 18
8 9 19
9 10 20
问题是我想单独访问我无法访问的值。在这里,我尝试转换为列表,但是当我执行 list[0] 时,我得到
def funct(row):
list1 = row.values
print(list1[0])
return row
df[['s1','s2']] = df[['ID1',"ID2"]].apply(lambda row: funct(row))
如何访问上面的1和11?当我使用 apply 将两个系列一起发送时,我应该如何索引以访问单个系列值? 注意:funct() 的内容现在只是返回相同的内容,因为我仍然不知道如何访问这些值以执行某些操作
解决方法
向您的应用函数添加参数 axis=1
,例如
import pandas as pd
from io import StringIO
s = """,ID1,ID2
0,1,11
1,2,12
2,3,13
3,4,14
4,5,15
5,6,16
6,7,17
7,8,18
8,9,19
9,10,20
"""
df = pd.read_csv(StringIO(s),index_col=0)
def funct(row):
# return row
# update the answer
return pd.Series([row.ID1 + 100,row.ID2 + 20])
df[['s1','s2']] = df[['ID1',"ID2"]].apply(funct,axis=1)