将单元格替换为元组



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

使用以下代码:

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()}')

尝试使用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

最新更新