我有一个从txt文件导入的DataFrame,其结构如下:
ID Place Name Other
0 123456789 1100 NAME1 5468.85
1 NUMBER1 1100 DESCRIPTION1
2 STR1 DESCRIPTION2
3 NUMBER2 OTHER_STR
4 987654321 1100 NAME2 4566.65
1 NUMBER1 1100 DESCRIPTION1
2 STR1 DESCRIPTION2
我想检查类似以下代码的内容,但是我知道通过df进行迭代是一种不好的做法,而且我不是熊猫专家:
for row in df:
if row['Other'] == '' or row['Place'] == '':
row['ID'] == previous_row['ID']
输出应如下所示:
ID Place Name Other
0 123456789 1100 NAME1 5468.85
1 123456789 1100 DESCRIPTION1
2 123456789 DESCRIPTION2
3 123456789 OTHER_STR
4 987654321 1100 NAME2 4566.65
1 987654321 1100 DESCRIPTION1
2 987654321 DESCRIPTION2
请注意,任何行都可以是STR,INT或空白。数据集有点多于100万行乘15列,因此需要快速。
我尝试了建议的here,但是它并不能完全确定要更新列值的条件。
答案 0 :(得分:3)
使用pandas.Series.ffill
:
s = df["Place"].eq("") | df["Other"].eq("")
df.loc[s, "ID"] = pd.np.nan
df["ID"].ffill(inplace=True)
print(df)
输出:
ID Place Name Other
0 123456789 1100 NAME1 5468.85
1 123456789 1100 DESCRIPTION1
2 123456789 DESCRIPTION2
3 123456789 OTHER_STR
4 987654321 1100 NAME2 4566.65
1 987654321 1100 DESCRIPTION1
2 987654321 DESCRIPTION2