2017-06-19 1 views
0

私のコードは次のようになります。pythonで複数のデータフレームを結合した後でprint()にスペースを追加するには?

import numpy as np 
import pandas as pd 

df = pd.read_csv('DelayedFlights.csv') 

df["final"] = 
df["Year"].map(str)+df["FlightNum"].map(str)+df["Origin"]+df["Dest"] 

print(df["final"].head()) #map converts the non string data types to string 

出力ショー:

0  2008335IADTPA 
1 20083231IADTPA 
2  2008448INDBWI 
3 20083920INDBWI 
4  2008378INDJAX 
Name: final, dtype: object 

私が欲しいの出力:

0 2008 335 IAD TPA 
1 2008 3231 IAD TPA 
2 2008 448 IND BWI 
3 2008 3920 IND BWI 
4 2008 378 IND JAX 
Name: final, dtype: object 

答えて

1

あなたが欲しい:

df["final"] = df["Year"].map(str)+ ' ' + df["FlightNum"].map(str)+ ' ' + df["Origin"]+ ' ' + df["Dest"] 
0
add_space = lambda x: str(x) + " " 
df["final"] = df["Year"].map(add_space) + df["FlightNum"].map(add_space) + df["Origin"].map(add_space) + df["Dest"] 

パンダのエキスパートではありませんが、文書(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html)とあなたの例ではマップメソッドが機能すると思われるので、書式設定時に余分なスペースが必要な場合は、文字列に変換するラムダを作成してください呼び出されると余分なスペースが追加されます。

df['final'] = df.apply(lambda x: ' '.join([str(x['Year']), str(x['FlightNum']), x['Origin'], x['Dest']]), axis=1) 

そして、すべての列内のテキストを組み合わせたダイナミックな機能のために:

df['final'] = df.apply(lambda row: ' '.join([str(col) for col in row]), axis=1) 

それともformat

df["final"] = df["Year"].map("{} ".format) + df["FlightNum"].map("{} ".format) + df["Origin"].map("{} ".format) + df["Dest"] 
0

シングル・ライン・オプションを使用して

または代わりに、ユーザ定義のリストによって制限される:

df['final'] = df.apply(lambda row: '{} {} {} {}'.format(row['Year'], row['FlightNum'], row['Origin'], row['Dest']), axis=1) 
cols = ['Year','FlightNum','Origin','Dest'] 
df['final'] = df.apply(lambda row: ' '.join([str(col) for col in row if col in cols), axis=1) 

formatを使用して

関連する問題