如何在python中组合多个数据帧后在print()中添加空格?

时间:2017-06-19 22:59:41

标签: python pandas dataframe

我的代码如下:

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

3 个答案:

答案 0 :(得分:1)

你想:

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

答案 1 :(得分: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)和你的例子中map方法可以获取一个函数,所以如果你想在格式化时有额外的空间,只需创建一个lambda来转换它到字符串然后在调用时添加额外的空格。

或者,使用format

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

答案 2 :(得分: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)