如何合并数据框列

时间:2019-02-24 10:23:00

标签: python pandas

我有一个数据框df,看起来像:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 810 entries, 0 to 809
Data columns (total 21 columns):
event_type      810 non-null object
datetime        810 non-null datetime64[ns]
person          810 non-null object
...
from_file       0 non-null float64
dtypes: datetime64[ns](1), float64(2), int64(2), object(16)
memory usage: 133.0+ KB

(有21列,但我只对以上四列感兴趣,因此省略了它们)

我想创建第二个数据帧df_b,该数据帧有两列,其中一列是df的{​​{1}}列的组合,而另一列是event_type,person,from_file' s df。我解释得很好吗?...(所以datetime的四列中df_b的两列中,但以上三列合并为df中的一列)

我想到了创建一个新的数据帧df_b的方式:

df_b

然后选择所有带有以下内容的行:

df_b = pandas.DataFrame({'event_type+person+from_file': [], 'datetime': []})

但是,除此之外,我不知道如何实现余数,我一直认为我最终将得到与原始行的df.loc[:, ['event_type','person','from_file','datetime']] 不对应的datetime值从datetime中拉出。

那么你能告诉我如何做吗

  • df中的所有行中选择event_typepersonfrom_filedatetime
  • 组合:dfevent_typeperson,值之间为from_file
  • 然后将('+'event_type+person+from_file放入datetime

1 个答案:

答案 0 :(得分:0)

要删除NaN值,请使用:

df_clean = df.dropna(subset=['event_type', 'person', 'from_file'])

在Pandas中串联字符串列就像

一样容易
df_clean['event_type+person+from_file'] = df_clean['event_type'] + '+' +
   df_clean['person'] + '+' + df_clean['from_file']

然后:

df_b = df_clean[['event_type+person+from_file', 'datetime']].copy()