用tup替换单元格

2024-04-23 08:32:14 发布

您现在位置:Python中文网/ 问答频道 /正文

如何获得由index元素和当前元素本身组成的元组:

代码如下:

import numpy as np
import pandas as pd
df = pd.DataFrame([[None, 'y', None], [None, None, 'x'], ['z', None, None]],
                  index=['a', 'b', 'c'],
                  columns=['X', 'Y', 'Z'])
print(f'\n{df.to_string()}')

我得到:

      X     Y     Z
a  None     y  None
b  None  None     x
c     z  None  None

我想要的是:

      X     Y     Z
a  None  (a,y)  None
b  None  None  (b,x)
c  (c,z) None  None

解决这个问题的一个相当粗糙的尝试会导致一个关于.name的错误:

df2 = df.mask(pd.isnull, lambda x: (x,x.name))
print(f'\n{df2.to_string()}')

Tags: to代码nameimportnumpynone元素df
1条回答
网友
1楼 · 发布于 2024-04-23 08:32:14

尝试使用df.aggzip以及数据帧切片

df.agg(lambda x: list(zip(df.index, x)))[df.notna()]

Out[928]:
        X       Y       Z
a     NaN  (a, y)     NaN
b     NaN     NaN  (b, x)
c  (c, z)     NaN     NaN

注意:我认为NaN表示比None好,所以我把它保留为NaN

相关问题 更多 >