以下数据框:
constructor(public authService: yourAuthService) { }
我需要将col_1,col_2,col_3中的NAN值替换为" F"当NAN没有在两个连续的行中重复时。输出是这样的:
index Sent col_1 col_2 col_3
1 AB NaN DD CC
1 0 1 0
2 SA FA FB NaN
2 1 1 NaN
3 FF Sha NaN PA
3 1 0 1
但它将NAN值下的0替换为F.如何修复代码以将NAN替换为F.
答案 0 :(得分:1)
可能有更好的方法,但有一种方法是尝试使用shift
查看上面的row
和下面的row
。但是,对于第一行和最后一行,它会产生问题。因此,如果添加额外的行并在以后删除它不是问题,您可以尝试以下操作:
# Appending row to the top: https://stackoverflow.com/a/24284680/5916727
df.loc[-1] = [0 for n in range(len(df.columns))]
df.index = df.index + 1 # shifting index
df = df.sort_index() # sorting by index
# Append row to below it
df.loc[df.shape[0]] = [0 for n in range(len(df.columns))]
print(df)
index Sent col_1 col_2 col_3
0 0 0 0 0 0
1 1 AB NaN DD CC
2 1 0 1 0
3 2 SA FA FB NaN
4 2 1 1 NaN
5 3 FF Sha NaN PA
6 3 1 0 1
7 0 0 0 0 0
现在,使用shift
和masking
shift(-1)
和shift(1)
使用columns = ["col_1", "col_2","col_3"]
for column in columns:
df.loc[df[column].isnull() & df[column].shift(-1).notnull() & df[column].shift(1).notnull(), column] = "F"
df = df [1:-1] # remove extra rows
print(df)
检查连续行:
index Sent col_1 col_2 col_3
1 1 AB F DD CC
2 1 0 1 0
3 2 SA FA FB NaN
4 2 1 1 NaN
5 3 FF Sha F PA
6 3 1 0 1
输出:
index
如果您愿意,也可以删除额外的csv
列,这似乎有重复。
我在测试index,Sent,col_1,col_2,col_3
1,AB,,DD,CC
1, ,0,1,0
2,SA,FA,FB,NA
2, ,1,1,NA
3,FF,Sha,,PA
3, ,1,0,1
文件中有以下内容。
dataframe
然后,您可以使用以下内容创建输入import pandas as pd
df = pd.read_csv("FILENAME.csv")
:
interface Table<T> {
// other functions omitted for simplicity
save(data: object): Promise<T | T[]>;
insert(data: object): Promise<T | T[]>;
update(dataOrCriteria: object, changesMap?: object): Promise<T | T[]>;
}