根据 pandas 中函数的输出创建 2 列或更多列
Create 2 or more columns from function's output in pandas
我正在尝试通过 returns 元组的函数为数据框创建两列
我有一个名为 df 的现有数据框,我正在使用 apply lambda 根据我的数据框的 2 列计算 2 个值
def f(a,b):
return a+b, a-b
df['SUM'], df['DIFF'] = apply(lambda x: f(x.COLUMN_1,x.COLUMN_2)
但我收到错误消息:
ValueError:要解压的值太多(预期为 2)
我的函数returns一系列与df行数相同的元组
尝试以下操作:
import pandas as pd
df = pd.DataFrame({'a': [0,1,2], 'b': [3,4,5]})
df[['SUM','DIFF']] = df[['a','b']].apply(lambda x: pd.Series({'SUM': x['a']+x['b'], 'DIFF': x['a']-x['b']}), axis=1)
产量:
a b SUM DIFF
0 0 3 3 -3
1 1 4 5 -3
2 2 5 7 -3
我是这样做的,我用元组创建一个列,然后拆分它,这是我之前在另一个 post 上使用的一些代码,应该有帮助:
def return_tuple(x):
if x in [1,'1','one']:
return (1, 'one')
else:
return (2, 'two')
df = pd.DataFrame({'col1': [1,2,3]})
df['test'] = df['col1'].apply(return_tuple)
df
# col1 test
#0 1 (1, one)
#1 2 (2, two)
#2 3 (2, two)
df[['test','test2']] = pd.DataFrame(df['test'].to_list(), index=df.index)
df
# col1 test test2
#0 1 1 one
#1 2 2 two
#2 3 2 two
我正在尝试通过 returns 元组的函数为数据框创建两列 我有一个名为 df 的现有数据框,我正在使用 apply lambda 根据我的数据框的 2 列计算 2 个值
def f(a,b):
return a+b, a-b
df['SUM'], df['DIFF'] = apply(lambda x: f(x.COLUMN_1,x.COLUMN_2)
但我收到错误消息:
ValueError:要解压的值太多(预期为 2)
我的函数returns一系列与df行数相同的元组
尝试以下操作:
import pandas as pd
df = pd.DataFrame({'a': [0,1,2], 'b': [3,4,5]})
df[['SUM','DIFF']] = df[['a','b']].apply(lambda x: pd.Series({'SUM': x['a']+x['b'], 'DIFF': x['a']-x['b']}), axis=1)
产量:
a b SUM DIFF
0 0 3 3 -3
1 1 4 5 -3
2 2 5 7 -3
我是这样做的,我用元组创建一个列,然后拆分它,这是我之前在另一个 post 上使用的一些代码,应该有帮助:
def return_tuple(x):
if x in [1,'1','one']:
return (1, 'one')
else:
return (2, 'two')
df = pd.DataFrame({'col1': [1,2,3]})
df['test'] = df['col1'].apply(return_tuple)
df
# col1 test
#0 1 (1, one)
#1 2 (2, two)
#2 3 (2, two)
df[['test','test2']] = pd.DataFrame(df['test'].to_list(), index=df.index)
df
# col1 test test2
#0 1 1 one
#1 2 2 two
#2 3 2 two