2017-08-15 7 views
0

データフレームdataとこれらの列にcol1col1.1があります。2つのDataFrame列の値を1つに結合するには

data: 
ID  Col1 Col1.1 
1  21  Water, Salt 
13  18  Onions 
101 30  Replaceable with oil, water, acid 

私はdataになりたい:

data: 
ID  Col1 
1  21: Water, Salt 
13  18: Onions 
101 30: Replaceable with oil, water, acid 

これまでのところ、私が持っている:

data['Col'] = ': '.join(str(list(zip(data['Col1'], data['Col1.1']))).split("', ")).replace("'", "").replace("(", "").replace(")", "").replace("[", "").replace("]", "") 

注:私はこれを実行するにSettingWithCopyWarningを取得します。

どうすればよいですか?あなたのすべての

答えて

3

使用str.catありがとう:

df['Col1'].astype(str).str.cat(df['Col1.1'], sep=': ') 
Out: 
0       21: Water, Salt 
1        18: Onions 
2 30: Replaceable with oil, water, acid 

あなたはこの背中を割り当てるとまったく同じ出力を得るために、他の列を削除する必要があります。

df['Col1'] = df['Col1'].astype(str).str.cat(df['Col1.1'], sep=': ') 
df = df.drop('Col1.1', axis=1) 

あるいは、1つのライン内のすべての、感謝MaxUへ:

df['Col1'] = df['Col1'].astype(str).str.cat(df.pop('Col1.1'), sep=': ') 
+0

または多分一の工程でそれを行う: 'DF [ 'のCol1'] = DF [ 'のCol1'] astype(STR).S tr.cat(df.pop( 'Col1.1')、sep = ':') ' – MaxU

+1

@MaxU良いアイデア!ありがとう。 – ayhan

+0

ありがとう@ayhanと@MaxU。ただし、変更は永続的ではありません。私はcsvファイルに 'data'を書くとき、' Col1'とその値だけが残っているので、これを知っています。言い換えれば、私はあなたが望む最後のものである 'Col1.1'からのデータを緩めます。 – CodeLearner

関連する問題