只需使用
或者像这样将
给定具有多列的熊猫DataFrame
pd.DataFrame({'name': ['Bob', 'Alice'], 'age': [20, 40], 'height': [2.0, 2.1]})
name age height
0 Bob 20 2.0
1 Alice 40 2.1
以及一个采用多个参数的函数
def example_hash(name: str, age: int) -> str:
return "In 10 years {} will be {}".format(name, age+10)
如何使用包含将函数应用于其他列的子集的结果的附加列来更新DataFrame
所得到的DataFrame将是将CCD_ 2应用于CCD_;age
列:
name age height hash
0 Bob 20 2.0 In 10 years Bob would be 30
1 Alice 40 2.1 In 10 years Alice will be 50
我对以pandas
为中心的响应感兴趣我知道可以构造一个pythonlist
,对行进行迭代,并将其附加到最终成为列的列表中。
提前感谢您的考虑和回复。
您可以在不更改example_hash()
方法的情况下执行此操作:
只需使用np.vectorize
In [2204]: import numpy as np
In [2200]: def example_hash(name: str, age: int) -> str:
...: return "In 10 years {} will be {}".format(name, age+10)
...:
In [2202]: df['new'] = np.vectorize(example_hash)(df['name'], df['age'])
In [2203]: df
Out[2203]:
name age height new
0 Bob 20 2.0 In 10 years Bob will be 30
1 Alice 40 2.1 In 10 years Alice will be 50
或者像这样将df.apply
与lambda
一起使用,而不更改您的自定义方法:
In [2207]: df['new'] = df.apply(lambda x: example_hash(x['name'], x['age']), axis=1)
In [2208]: df
Out[2208]:
name age height new
0 Bob 20 2.0 In 10 years Bob will be 30
1 Alice 40 2.1 In 10 years Alice will be 50
您可以使用apply
函数来迭代行并添加新列。
In [139]: df = pd.DataFrame({'name': ['Bob', 'Alice'], 'age': [20, 40], 'height': [2.0, 2.1]})
In [140]: df
Out[140]:
name age height
0 Bob 20 2.0
1 Alice 40 2.1
In [142]: def example_hash(row):
...: row['hash']= "In 10 years {} will be {}".format(row['name'], row['age']+10)
...: return row
...:
In [143]: df = df.apply(example_hash,axis=1)
In [144]: df
Out[144]:
name age height hash
0 Bob 20 2.0 In 10 years Bob will be 30
1 Alice 40 2.1 In 10 years Alice will be 50