2017-08-05 66 views
0

我有兩個數據幀,test_df是一個列表,而product_combos df是元組。我改變了test_df到元組以及像這樣:熊貓在將列表轉換爲元組後將長度列添加到數據幀

[in] print(testing_df.head(n=5)) 
[out] 
        product_id 
transaction_id     
001      [P01] 
002     [P01, P02] 
003    [P01, P02, P09] 
004     [P01, P03] 
005    [P01, P03, P05] 

[in] print(product_combos1.head(n=5)) 
[out] 
      product_id count length 
0   (P06, P09) 36340  2 
1 (P01, P05, P06, P09) 10085  4 
2   (P01, P06) 36337  2 
3   (P01, P09) 49897  2 
4   (P02, P09) 11573  2 

# Convert the lists to tuples 
testing_df1 = testing_df['product_id'].apply(tuple) 

我遇到問題時,我現在嘗試和長度列添加到test_df1(其計算每一行中的字符串的數量)。

我試過先添加長度列,然後轉換爲元組,但長度列只是消失,當我嘗試這一點。我也做了:

testing_df1['length'] = testing_df['product_id'].str.len() 

但是這只是增加了一排廢話。我也試過:

testing_df1['length'] = testing_df['product_id'].apply(len) 

這似乎不工作。我做錯了什麼,我該如何解決它?

回答

0

它的正常工作

df = pd.DataFrame([[1,['a','b']],[2,['a','b','c']],[3,['c','b']],[4,['b','d']],[5,['c','a']]]) 

DF:

0 1 
0 1 [a,b] 
1 2 [a, b, c] 
2 3 [c, b] 
3 4 [b, d] 
4 5 [c, a] 


df[1] = df[1].apply(tuple) 
df['length'] = df[1].apply(len) 

DF:

0 1  length 
0 1 (a, b)  2 
1 2 (a, b, c) 3 
2 3 (c, b)  2 
3 4 (b, d)  2 
4 5 (c, a)  2 
+0

我不知道爲什麼它不是之前正常工作。我認爲這是因爲我將結果分配給一個新的變量,而不是簡單地改變原來的df? – zsad512

+0

是的,可能就是這樣 –