pandas 来自DataFrame的新pd DataFrame,模态有限

bnlyeluc  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(93)

我正在尝试创建两个较小的 Dataframe ,基于一个 Dataframe (“主 Dataframe ”)。第一个dataframe(1)应该包括主DataFrame的所有列,对于这些列,模态的数量小于例如2。另一个数据框架应该具有所有剩余的列。
我试了好几种方法都不管用。最后一个,我尝试在DataFrame中返回unique,对值进行排序,然后只选择我能看到的符合两个模态标准的那些,总共11列
尝试1:

new_df = df.iloc[df.columns[df.nunique[0] <=2]]
[TypeError: 'method' object is not subscriptable

字符串
尝试2:

new_df = df.loc[df.nunique.sort_values()[:11])]


但它返回了所有列,没有筛选。
有人能帮我解决这个问题吗?

ego6inou

ego6inou1#

在IIUC中,第一 Dataframe 应该包括来自原始 Dataframe 的所有列,其中每列具有1个唯一值。你可以使用一个掩码来实现:

import pandas as pd
import numpy as np

main = pd.DataFrame({
    'col1': ['a', 'a', 'a', 'b', 'b', 'b'],
    'col2': ['thing1', 'thing2', 'thing3', 'thing4', 'thing5', 'thing6'],
    'col3': [11, 11, 33, 44, 2, 3],
    'col4': [11, 11, 11, 11, 56, 77]
})

mask = (main.nunique() <= 2)

字符串
使用遮罩创建两个单独的DF:

# containing columns with <= 2 unique values:
df1 = main.loc[:, mask]
# containing all the remaining columns:
df2 = main.loc[:, ~mask]

相关问题