2017-09-05 75 views
6

Próbowałem wyszukać, jak uzyskać wartość pierwszej kolumny i dołączyć ją do pozostałych kolumn w ramce danych, ale te że widziałem potrzebę stworzenia nowej kolumny dla nowej produkcji.Jak dodać wartości pierwszej kolumny do wszystkich innych kolumn w ramce danych pandy

Najbliższe, które znalazłem w oparciu o to, czego potrzebuję, to ten kod.

df['col'] = 'str' + df['col'].astype(str) 

Poniżej znajduje się próbka mojego dataframe

 col1  col2 col3 col4 
1 02-04-2017  ND  0.32  0.8 
2 02-05-2017  0.3  ND  No Connection 

Co chcę wiedzieć, w jaki sposób mogę uzyskać to wyjście?

 col1   col2    c ol3    col4 
1 02-04-2017 ND|02-04-2017  0.32|02-04-2017  0.8|02-04-2017 
2 02-05-2017 0.3|02-05-2017 ND|02-05-2017  No Connection|02-05-2017 

Odpowiedz

3

Można to zrobić trochę łatwo df.iloc i str.cat:

df.iloc[:, 1:] = df.iloc[:, 1:].apply(lambda x: x.str.cat(df['col1'], sep='|')) 
df 

     col1   col2    col3      col4 
1 02-04-2017 ND|02-04-2017 0.32|02-04-2017   0.8|02-04-2017 
2 02-05-2017 0.3|02-05-2017 ND|02-05-2017 No Connection|02-05-2017 

Można również użyć df.transform (v0.20 r).

df.iloc[:, 1:] = df.iloc[:, 1:].transform(lambda x: x.str.cat(df['col1'], sep='|')) 
df 

     col1   col2    col3      col4 
1 02-04-2017 ND|02-04-2017 0.32|02-04-2017   0.8|02-04-2017 
2 02-05-2017 0.3|02-05-2017 ND|02-05-2017 No Connection|02-05-2017 
+0

Dobry przypomnieniem 'transform' na dataframes zakładać' 0.20' – piRSquared

3

Zabawa z assign, add i radd

df.assign(**df.iloc[:, 1:].astype(str).add(df.col1.radd('|'), 0)) 

     col1   col2    col3      col4 
1 02-04-2017 ND|02-04-2017 0.32|02-04-2017   0.8|02-04-2017 
2 02-05-2017 0.3|02-05-2017 ND|02-05-2017 No Connection|02-05-2017 
+0

Nie wiem dlaczego, ale próbowałem dodać wiele razy i nie powiodło się. Domyślam się, że robiłem to źle! –

+0

'Dtype' jest tylko kwestią, o której mogę myśleć – piRSquared