我想用其值大于或等于1的列来获取其他数据框填充.
df = pd.DataFrame({'A': '0 1 0 0 1 2'.split(),
'B': '0.1 0.2 0 0.5 0 0.1'.split(),'C':'0.1 0.2 0 0.5 0 0.1'.split()})
A B C
0 0 0.1 0.1
1 1 0.2 0.2
2 0 0 0
3 0 0.5 0.5
4 1 0 0
5 2 0.1 0.1
例如,我想得到像这样的df2:
df2 = pd.DataFrame({'A': '0 1 0 0 1 2'.split()})
如果我尝试df2 = df2 [df2.values.astype(float)> = 1]我保留我的三列
解决方法:
我创建了一个布尔掩码,其中列中的至少一些值是> = 1.然后我在数据和列上使用此掩码来生成新的数据帧.
我利用numpy掩盖.
# convert to floats and define mask
v = df.values.astype(float)
mask = (v >= 1).any(0)
# assign new dataframe with masked data and masked columns
# just incase there where multiple columns that satisfied.
df2 = pd.DataFrame(v.T[mask].T, columns=df.columns[mask])
df2
定时
df 1000倍
df = pd.concat([df.T for _ in range(1000)], ignore_index=True).T
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。