Python 从2D数据帧生成单列数据帧
我有一个数据框,它的形状(750020000)由0到7的值组成Python 从2D数据帧生成单列数据帧,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据框,它的形状(750020000)由0到7的值组成 0 1 2 3 4 5 6 7 8 9 ... 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1 0
0 1 2 3 4 5 6 7 8 9 ... 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
我想从中创建一个数据框,其中有一列
该值是一个最大计数为1-7的数字,因为其中大多数为零,因此,如果逻辑如下,我将不胜感激
您可以执行以下操作。使用以下示例数据帧:
print(df)
1 2 3 4 5 6 7 8 9 10
0
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 0.0 1.0 1.0 1.0 0.0 1.0 2.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
def fun(x):
is_zero = x.quantile(q=0.95) == 0
if is_zero:
return x
else:
most_common = x[x!=0].value_counts().index[0]
return np.repeat(most_common, len(x))
df.apply(lambda x: fun(x), axis = 1)
1 2 3 4 5 6 7 8 9 10
0
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
基于Alexandre的出色回答,我不确定他是否正确地解释了你的问题 如果您需要构建包含单个列的新数据框(或希望将该列附加到现有数据框),我提供以下解决方案:
df = original_dataframe
def fun(x):
is_zero = x.quantile(q=0.95) == 0
if is_zero:
return 0
else:
number = x[x != 0].value_counts()
return number[number.index[0]]
# to add a new column to the existing dataset
df["new_column"] = df.apply(lambda x: fun(x), axis = 1)
# to build a new dataframe
new_dataframe = pd.DataFrame(df.apply(lambda x: fun(x), axis = 1))
“填充任何数字1-7的最大计数”表示您希望计数最多的单个数字的计数,或所有数字的总和不同于0?