Python pandas使用split来交换列值

时间:2016-12-27 12:32:41

标签: python pandas dataframe

我有一只看起来像这样的熊猫df:

true

Explnation: 有时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 TTL2的值会跳转到TTL5。 所以我想做的是检查TTL4TTL2是否为空,如果是,请转到TTL4,将其拆分为TTL5(空格)并放入正确列中的每个值。

虽然我面临着一些麻烦...

请问任何想法?

1 个答案:

答案 0 :(得分: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