2016-12-27 103 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