def find_in(series):
seq = series['Delte Formula']
res = [ i.start() for i in re.finditer(sort_seq, seq, flags=re.IGNORECASE)]
return len(res), json.dumps(res)
return find_in
sort_seq = "AAGCTT"
df[ ["AAGCTT_count", "AAGCTT_index"] ] = df.apply(find(sort_seq), axis=1, result_type="expand")
如题,直接上代码apply函数,添加参数 result_type="expand" 即可def find(sort_seq): def find_in(series): seq = series['Delte Formula'] res = [ i.start() for i in re.finditer(sort_seq, seq, flags=re.IGNORECASE)] return len(res), json.dumps(res)
返回
与组块大小相同或可广播到组块大小的结果(例如,标量,grouped.transform(lambda x: x.iloc[-1]))
在组块上逐列操作。 使用 chunk.
apply
将转换应用于第一个组块。
不对组块执行就地操作。 组块应该被视为不可变的,对组块的更改可能会产生意想不到的结果。 例如,使用fillna 时,inplace 必须为False (grouped.transform(lambd
import
pandas
as pd
data = { 'names' : ['x,a,c','y,er,rt','z,1,ere']}
df = pd.DataFrame(data)
def myfunc(text):
sections=text.split(',')
return sections
df['part1'] ,df['part2'], df['part3'] = zip(*df['names'].
apply
(myfunc))
print (df)
#print的结果:
import
pandas
as pd
df_tmp = pd.DataFrame([
{"a":"data1", "cnt":100},{"a":"data2", "cnt":200},
df_tmp
a cnt
data1 100
data2 200
方法一:使用
apply
的参数result_type 来处理
def formatrow(ro...
方法一:把 df.
apply
(function, axis=1)改为:zip(*df.
apply
(function, axis=1))
方法二:修改
apply
循环的那个函数,使其在传入的series中修改,并
返回
一个series
方法三:在
apply
中加一个参数result_type,改为:df.
apply
(add_one, axis=1, result_type=‘
expand
’)
多的不说,请看代码~df = pd.DataFrame ({'a' : np.random.randn(6),
'b' : ['foo', 'bar'] * 3,
'c' : np.random.randn(6)})
def my_test(a, b):
return a + b
df['Value'] = df.
apply
(lambda row: my_test(row...
import numpy as np
import
pandas
as pd
s2 = pd.Series(['a_b_c_f_j', 'c_d_e_f_h', np.nan, 'f_g_h_x_g'])
print("-----------------------------------")
print(s2.str.split('_'))
print("-----------------------------------")
print(s2.str.split('
Series.
apply
(func,convert_dtype=True,args=(),**kwds)
func:对Series的值调用函数。可以是ufunc(适用于整个Series的NumPy函数)或仅对单个值工作的Python函数
convert_dtype: 尝试为基本函数结果找到更好的元素类型(dtype)。如果为False,则元素类型(dtype)为object类型...
Pandas
的
apply
() 方法是用来调用一个函数(Python method),让此函数对数据对象进行批量处
Pandas
的很多对象都可以使用
apply
() 来调用函数,如 Dataframe、Series、分组对象、各种时间序列等。
2.语法结构
apply
() 使用时,通常放入一个 lambda 函数表达式、或一个函数作为操作运算,官方上给出DataFrame的
apply
() 用法:
DataFrame.
apply
(self, func, axis=0, r
# 创建一个包含
多列
数据的DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
# 定义批量修改函数
def modify(row):
row['A'] = row['A'] * 2
row['B'] = row['B'] * 3
row['C'] = row['C'] * 4
return row
# 批量修改
多列
数据
df = df.
apply
(modify, axis=1)
上述代码中,定义了一个`modify()`函数,该函数接受一个Series对象作为参数,对A、B、C三列数据进行修改,并
返回
修改后的Series对象。然后使用`
apply
()`方法对DataFrame进行遍历,并应用`modify()`函数进行批量修改。最终得到的df对象就是修改后的DataFrame。需要注意的是,`
apply
()`方法默认是按行遍历DataFrame,所以需要设置`axis=1`参数。