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(row):
a = row["a"] + str(row["cnt"])
b = str(row["cnt"]) + row["a"]
return a, b
df_tmp[["fomat1", "format2"]] = df_tmp.apply(formatrow, axis=1, result_type="expand")
df_tmp
a cnt fomat1 format2
data1 100 data1100 100data1
data2 200 data2200 200data2
方法一:使用zip打包返回结果来处理
df_tmp["fomat1-1"], df_tmp["format2-2"] = zip(*df_tmp.apply(formatrow, axis=1))
df_tmp
a cnt fomat1 format2 fomat1-1 format2-2
data1 100 data1100 100data1 data1100 100data1
data2 200 data2200 200data2 data2200 200data2
转载他人的,本来自己想写,算了import pandas as pddf_tmp = pd.DataFrame([ {"a":"data1", "cnt":100},{"a":"data2", "cnt":200},])df_tmpa cntdata1 100data2 200方法一:使用apply 的参数result_type 来处理def formatrow(ro...
df1['text'] = df1['RFRV'].apply(get_need)
df1[['complexity','comple_ci','num_ci','count']] = df1['text'].apply(pd.Series)
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)
多的不说,请看代码~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...
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['a'], row['c']), axis=1
一个实例中,需要用两个列相除,且要判断除数不为0,求教了大佬,用如下方法解决
apply取出一行的值,再用一个自定义函数。
chengji=[[100,95,100,98],[90,98,0,94],[88,95,98,95],[99,98,97,92],[95,90,96,88],[94,94,93,77]]
data=pd.DataFrame(chengji,columns=['语文','类别...
luduan_info[["STAKE_84X", "STAKE_84Y"]] = \
luduan_info.
apply(lambda row:\
wgs84toutm(row["start_longitude"], row["start_latitude"]), axis=1, result_type="expand")
划重点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...
方法一:把 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')
对于下面的代码:
import
pandas as pd
# 对传入的值做 +1 的操作
def a
pandas的DataFrame对象的apply方法可以将传入的函数应用到每一列或每一行进行元素级别的运算。通过使用apply方法,可以对多列进行操作。
例如,可以通过lambda表达式来对多列进行处理。可以使用axis参数来指定按行(axis=1)或按列(axis=0)进行操作。比如,通过以下代码可以将A列和B列相加并赋值给C列:
df['C'] = df.apply(lambda x: x['A'] + x['B'], axis=1)
另外,也可以使用自定义的函数来操作多列。通过定义一个自定义函数,然后使用apply方法将该函数应用到DataFrame对象的多列上。比如,可以定义一个函数来判断条件,并根据条件来赋值一个新列:
def get_wendu_type(x):
if x['bWendu'] > 33:
return "高温"
elif x['yWendu'] < -10:
return "低温"
else:
return "常温"
df['wendu_type'] = df.apply(get_wendu_type, axis=1)
以上是两种常见的方法来处理pandas DataFrame对象的多列。可以根据具体的需求选择合适的方法来对多列进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Pandas DataFrame新增一列](https://blog.csdn.net/m0_64336020/article/details/122130294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]