2017-06-15 47 views
0

可以說我有一個數據幀,看起來像這樣:如何根據列值移動某些行?

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中(即數字)。如何在熊貓指定地說:

  • 對於每一個不是X,Y,或空值,由1列上移特定行。

我所需的輸出感:

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或Empty,忽略和數字移位......反之亦然。

任何提示將不勝感激!

基本上:我怎麼說;那些不是這些具體價值的東西,拿走那一排,把一切都轉移過來?

回答

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 
+0

所以這實際工作..唯一的問題是,我相信它也移相空行'「」'。你覺得我可以定義這些嗎? – sgerbhctim

+0

無論如何,我可以在執行此操作之前用空白行填充空行嗎? 「用X填充此列中的空單元格」的命令是什麼? – sgerbhctim

+1

你可以做df ['A'] = df ['A']。fillna('X')或df ['A'] = df ['A']。str.replace('','X') –

相關問題