Python 如何根据特定列在数据帧中上移行
如何在不影响其他列顺序的情况下,将一行中某一特定列的所有值上移 例如,假设我有以下代码:Python 如何根据特定列在数据帧中上移行,python,pandas,Python,Pandas,如何在不影响其他列顺序的情况下,将一行中某一特定列的所有值上移 例如,假设我有以下代码: import pandas as pd data= {'ColA':["A","B","C"], 'ColB':[0,1,2], 'ColC':["First","Second","Third"]} df = pd.DataFrame(data) print(df) 我将看到以下输出: ColA ColB ColC 0 A 0 First
import pandas as pd
data= {'ColA':["A","B","C"],
'ColB':[0,1,2],
'ColC':["First","Second","Third"]}
df = pd.DataFrame(data)
print(df)
我将看到以下输出:
ColA ColB ColC
0 A 0 First
1 B 1 Second
2 C 2 Third
在我的例子中,我想验证B列没有任何0,如果是这样,它将被删除,并且它下面的所有其他值都会向上推,并且其他列的顺序不会受到影响。大概我会看到以下情况:
ColA ColB ColC
0 A 1 First
1 B 2 Second
2 C NaN Third
我不知道如何使用drop或shift方法来实现这一点
谢谢我执行此IIUC的方法是过滤掉ColB中非0的值,并根据获得的有效值的长度用这些值填充列:
m = df.loc[~df.ColB.eq(0), 'ColB'].values
df['ColB'] = float('nan')
df.loc[:m.size-1, 'ColB'] = m
print(df)
ColA ColB ColC
0 A 1.0 First
1 B 2.0 Second
2 C NaN Third
我执行此IIUC的方法是过滤掉ColB中不是0的值,并根据获得的有效值的长度用这些值填充列:
m = df.loc[~df.ColB.eq(0), 'ColB'].values
df['ColB'] = float('nan')
df.loc[:m.size-1, 'ColB'] = m
print(df)
ColA ColB ColC
0 A 1.0 First
1 B 2.0 Second
2 C NaN Third
您可以将0替换为NaN,然后将其余值上移:
将numpy作为np导入
df.ColB.replace0,np.nan,inplace=True
df.assignColB=df.ColB.shiftdf.ColB.count-lendf.ColB
您可以将0替换为NaN,然后将其余值上移:
将numpy作为np导入
df.ColB.replace0,np.nan,inplace=True
df.assignColB=df.ColB.shiftdf.ColB.count-lendf.ColB
让我们做简单的分类
让我们做简单的分类