假设我有一个看起来像这样的DataFrame:
A B C D
X 5 6 5
Y 3 1 2
X 9 7 5
3 5 2
9 8 7 NaN
5 2 2 NaN
X 4 3 1
Y 3 2 1
6 8 0 NaN
注意,在A列中,某些值是字母(即X,Y)。在A列中,还有值应在B列中(即数字)。我如何在熊猫中指明:
我想要的输出是:
A B C D
X 5 6 5
Y 3 1 2
X 9 7 5
3 5 2
9 8 7
5 2 2
X 4 3 1
Y 3 2 1
6 8 0
即便是这样的事情对我也有用:
A B C D E
X 5 6 5
Y 3 1 2
X 9 7 5
3 5 2 NaN
9 8 7 NaN
5 2 2 NaN
X 4 3 1
Y 3 2 1
6 8 0 NaN
应该有某种功能可以说,对于X,Y或空的每个值,忽略和数字转换的那些......反之亦然。
任何提示都将不胜感激!
基本上:我怎么说;任何不是这些特定值的东西,拿走那一行并将所有东西都移过来?
答案 0 :(得分:1)
我的方法是将DataFrame转换为列表列表,然后将空元素插入到没有X,Y或''的每一行中。
df = df.values.tolist()
for row in df:
if row[0] not in ['X', 'Y', '']:
row.insert(0, '')
result = pd.DataFrame(df, columns=list('ABCDE')
<强>输出:强>
A B C D E
0 X 5 6 5.0 NaN
1 Y 3 1 2.0 NaN
2 X 9 7 5.0 NaN
3 3 5 2.0 NaN
4 9 8 7.0 NaN
5 5 2 2.0 NaN
6 X 4 3 1.0 NaN
7 Y 3 2 1.0 NaN
8 6 8 0.0 NaN