我有一个dataframe
tdf。它有几列,其中三列是X,Y,Z。
我想收集每一行,并将X,Y,Z的值作为单个元组传递给函数。
起初我试过这个:
def format_tuple(x):
print(x)
return x
tmdf = tdf[['X', 'Y', 'Z']].applymap(format_tuple)
但是,此代码会处理每一列' X',' Y',' Z'在print(x)
中看到的每个列都会单独列出'单独的值,而不是三列转换为单行tuple
。
然后我想,将这些值转换为这样的tuple
,但它不起作用:
tmdf = tdf[['X', 'Y', 'Z']].apply(tuple, axis=1).applymap(format_tuple)
答案 0 :(得分:1)
applymap
用于元素转换。根据您的要求,沿第一轴使用apply
:
def format_tuple(x):
print(tuple(x.tolist()))
return x
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 100, (5, 3)), columns=list('XYZ'))
df
X Y Z
0 45 48 65
1 68 68 10
2 84 22 37
3 88 71 89
4 89 13 59
df[['X', 'Y', 'Z']].apply(format_tuple, axis=1)
(45, 48, 65)
(45, 48, 65)
(68, 68, 10)
(84, 22, 37)
(88, 71, 89)
(89, 13, 59)