python - Python Pandas 用元组中的 NAN 替换值
问题描述
得到以下数据框:
A B
Temp1 1
Temp2 2
NaN NaN
NaN 4
由于 A 和 B 是相关的,我可以创建新列,在其中计算 A 和 B 的 nan 值并形成一个元组:
A B C
Temp1 1 (1,Temp1)
Temp2 2 (2, Temp2)
NaN NaN (3, Temp3)
NaN 4 (4, Temp4)
现在我必须删除列 C 并填充对应于列的 Nan 值。
解决方案
使用Series.fillna
tuple 中的选择值,使用索引str
,最后删除C
列:
#if values are not in tuples
#df.C = df.C.str.strip('()').str.split(',').apply(tuple)
df.A = df.A.fillna(df.C.str[1])
df.B = df.B.fillna(df.C.str[0])
df = df.drop('C', axis=1)
print (df)
A B
0 Temp1 1
1 Temp2 2
2 Temp3 3
3 Temp4 4
C
或从with创建 DataFrame以DataFrame.pop
供使用和删除列,设置新列名称并传递给DataFrame.fillna
:
#if values are not in tuples
#df.C = df.C.str.strip('()').str.split(',').apply(tuple)
df[['A','B']] = df[['A','B']].fillna(pd.DataFrame(df.pop('C').tolist(), columns=['B','A']))
print (df)
A B
0 Temp1 1
1 Temp2 2
2 Temp3 3
3 Temp4 4
推荐阅读
- homebrew - Flutter 说没有安装 Brew
- android - Android 区分电视和机顶盒
- unity3d - 四元数校正
- spring-security - Gatling 测试 CSRF Spring Security 通过 Web 表单阻止了我的帖子
- android - Android Studio 无法识别 .kt 文件
- c# - 检查负数是否在一个范围内
- xamarin - 如何对 xamarin 表单应用程序进行基准测试
- c++ - bazel-run 不会加载在 bazel 构建时加载的所有 tensorflow 包
- xml - 如何在 Oracle 中从 Clob XML 中查找节点值
- javascript - 断言数组中的值已在下拉列表中签入