2017-06-19 143 views
0

我的代碼看起來是這樣的:多個dataframes在python合併後如何添加打印()空間?

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)和你的榜樣,該地圖的方法可以採取功能似乎,所以如果你想格式化時,一個額外的空間,只是創建它轉換爲字符串,然後拉姆達被調用時會增加額外的空間。

或者,使用format

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

單行選項:

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) 

或者限於由用戶定義的列表:

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

df['final'] = df.apply(lambda row: '{} {} {} {}'.format(row['Year'], row['FlightNum'], row['Origin'], row['Dest']), axis=1)