对pandas DataFrame

时间:2018-02-16 03:26:08

标签: python pandas dataframe apply

我有一个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)

1 个答案:

答案 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)

请注意the first group is duplicated for performance reasons