I have dataframe
看起来像这样。
Name Val Rating
0 ABC 123 B +
1 DEF 234 B +
2 567 B- NaN
3 GHI 890 D
但我想通过检查来移动数据(col['Name'])
到下一栏(col['Val'])
并依次转移。另外,如果发生移位,请更改行index
价值。我想要以下dataframe
作为输出。
Name Val Rating
0 ABC 123 B +
1 DEF 234 B +
NaN 567 B -
2 GHI 890 D
有人知道该怎么做吗?
您可以通过布尔掩码移动行:
mask = pd.to_numeric(df['Name'], errors='coerce').notnull()
df[mask] = df[mask].shift(axis=1)
print (df)
Name Val Rating
0 ABC 123 B +
1 DEF 234 B +
2 NaN 567 B-
3 GHI 890 D
Detail:
print (pd.to_numeric(df['Name'], errors='coerce'))
0 NaN
1 NaN
2 567.0
3 NaN
Name: Name, dtype: float64
如果确实需要将索引值替换为empty
字符串可以创建助手Series
and reindex http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.reindex.html.
但不建议这样做,因为性能问题,并且可能具有此索引的某些功能会失败。
i = df.index[~mask]
df.index = pd.Series(range(len(i)), index=i).reindex(df.index, fill_value='')
print (df)
Name Val Rating
0 ABC 123 B +
1 DEF 234 B +
NaN 567 B-
2 GHI 890 D
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)