2016-12-27 82 views
0

值我有一個熊貓DF,看起來像這樣:Python的大熊貓交換柱與分

TTL1 TTL2 TTL3 TTL4 TTL5 
val1 val2 val3 val4 some value 
val1 val2 val3 val4 
val1 val2 val3 val4 some more value 
val1 val2 val3 val4 some value 
val1   val3   val2 val4 
val1 val2 val3 val4 some value 

Explnation: 有時TTL2TTL4值跳到TTL5。 所以我想要做的是檢查TTL2TTL4是否爲空,如果是,請轉到TTL5,將它拆分爲(空格),並將每個值放在正確的列中。

雖然我面臨着一些麻煩...

有什麼想法嗎?

回答

3

我想這樣做更有效率(使用pandas向量化方法之一),但這是我到目前爲止得到的結果。只要你的數據幀不是太大,它應該有一個合理的運行時間。

import pandas as pd 

df = pd.DataFrame({'TTL2': ['a', None], 'TTL4': ['b', None], 'TTL5': [None, 'a b']}) 

print(df) 

#  TTL2 TTL4 TTL5 
# 0  a  b None 
# 1 None None a b 

for row in df.iterrows(): 
    index = row[0] 
    ttl2_val = row[1].TTL2 
    ttl4_val = row[1].TTL4 
    if not ttl2_val and not ttl4_val: 
     df.ix[index, 'TTL2'], df.ix[index, 'TTL4'] = row[1].TTL5.split() 

print(df) 

#  TTL2 TTL4 TTL5 
# 0 a b None 
# 1 a b a b 
+0

爲什麼你討厭帽子? :P – MYGz

+0

@MYGz我覺得帽子不舒服 – DeepSpace