我有两个数据帧,一个带有列[a,b,c],另一个带有列[a,b,d],如下所示:
matrix = [(222, 34, 23),
(333, 31, 11),
(444, 16, 21),
(555, 32, 22),
(666, 33, 27),
(777, 35, 11)
]
# Create a DataFrame object
dfObj = pd.DataFrame(matrix, columns=list('abc'))
print(dfObj)
a b c
0 222 34 23
1 333 31 11
2 444 16 21
3 555 32 22
4 666 33 27
5 777 35 11
matrix = [(222, 34, 5),
(333, 31, 6),
(444, 16, 7),
(555, 32, 8),
(666, 33, 9),
(777, 35, 10)
]
# Create a DataFrame object
dfObj1 = pd.DataFrame(matrix, columns=list('abd'))
我想用[a,b,c,d]列构造一个新的矩阵,如下所示:
def test_func(x):
return dfObj1.d[dfObj1['a'].isin([x['a']])]
dfObj['d'] = dfObj.apply(test_func, axis = 1)
但是,dfObj.apply(test_func, axis = 1)
的输出是如下所示的数据帧:
1 2 3 4 5
1 6.0 NaN NaN NaN NaN
2 NaN 7.0 NaN NaN NaN
3 NaN NaN 8.0 NaN NaN
4 NaN NaN NaN 9.0 NaN
5 NaN NaN NaN NaN 10.0
我希望得到以下输出-[6,7,8,9,10]
。你知道吗
我知道有几种方法可以实现这个目标,但我只是想找出我在这个方法中做错了什么。你知道吗
在您的函数中,结果以
Series
的形式返回,当您为它指定索引do matter时,例如,索引1将返回一个带有索引1的序列,因此它将以矩阵的形式显示在位置上。(apply result将连接,每个输入有不同的索引和列,就像一个小数据帧)消除索引影响以修复
如果在函数中返回带有} 中添加
.values
的numpy数组,并在^{result_type='expand'
参数,则有可能:如果需要返回缺少值的标量,另一种方法是使用
next
和iter
:但更好/更快的是使用^{} :
或^{} :
相关问题 更多 >
编程相关推荐