2016-08-19 26 views
2

我有一個像下面的數據幀:如何獲得砍幾價值在不同的山坳中的蟒蛇數據幀

 pop state year  value1 value2 value3 
    0 1.8 Ohio 2000001  3   3   1 
    1 1.9 Ohio 2001001  3   3   1 
    2 3.9 Nevada 2002   3   3   1 
    3 2.9 Nevada 2001003  3   3   1 
    4 2.0 Nevada 2002004  3   3   1 

我要剪切的DF [「年」]三段值1,值2,值3。如果該值不夠長,我可以用0 所以我想要得到的數據幀如下填寫:

 pop state year  value1 value2 value3 
    0 1.8 Ohio 2000001  200  000  1 
    1 1.9 Ohio 2001001  200  100  1 
    2 3.9 Nevada 2002   200  2   0 
    3 2.9 Nevada 2001003  200  100  3 
    4 2.0 Nevada 2002004  200  200  4 

而且如果df [「值1」],DF [「值」], df ['value3']具有不同的值。我怎樣才能在Python大熊貓呢?

回答

2

您可以將year轉換爲字符串值,然後str.extract提取與3列中的值對應的特定切片。

然後,您可以用0替換空字符串以獲取所需的結果。

In [3]: df['year'] = df['year'].astype(str) 

In [4]: df.ix[:,3:6] = df['year'].str.extract('(?P<value1>\d{0,3})(?P<value2>\d{0,3})(?P<value3>\d{0,1})') 

In [5]: df.replace('', 0, inplace=True) 

In [6]: df 
Out[6]: 
    pop state  year value1 value2 value3 
0 1.8 Ohio 2000001 200 000  1 
1 1.9 Ohio 2001001 200 100  1 
2 3.9 Nevada  2002 200  2  0 
3 2.9 Nevada 2001003 200 100  3 
4 2.0 Nevada 2002004 200 200  4 
+1

不錯的解決方案,+1 – jezrael

+0

嗨尼克爾,我有一個問題。如果我有一個有很多列的數據框,比如value1,value2 ..... value100。我很難寫這樣的代碼:df.ix [:,3:6] = df ['year']。str.extract('(?P \ d {0,3})(?P \ d {0,3})(?P \ d {0,1})')。我該怎麼做?謝謝〜 – Chauncey