如何获得由索引元素和当前元素本身组成的元组:
使用以下代码:
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.agg
和zip
以及数据帧切片
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