【发布时间】:2018-07-28 08:14:42
【问题描述】:
我有两个由 pd.read_csv 使用 pandas 读取的数据帧。
数据 1:
animal name
0 lion a
1 tiger b,c
2 tiger b,c
3 bear d,e
4 bear d,e
数据 2:
0 lion w
1 tiger x,y
2 bear z
我想在以逗号分隔的名称列的第一个值(数据 1)之后,将动物列(数据 1)与第一列(数据2)和插件第二列(数据2)进行比较。
这就是我想要的结果。
animal name
0 lion a,w
1 tiger b,x,y,c
2 tiger b,x,y,c
3 bear d,z,e
4 bear d,z,e
我该怎么做?
感谢下面的输入,我创建了这样的代码并且效果很好。 其实我是想在第一个字符串后面插入df2名称列。
import sys
import pandas as pd
df1 = pd.read_csv("df1.dat", delimiter = '\t')
df2 = pd.read_csv("df2.dat", delimiter = '\t')
df1 = df1.fillna('')
df2 = df2.fillna('')
df1['first'] = df1['name'].str.split(',').str[0]
df1['rest'] = df1['name'].str.split(',').str[1:].apply(','.join)
df1['name'] =df1.merge(df2, how='inner', on='animal')[['first', 'name_y', 'rest']].apply(','.join, 1)
df1.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
df2 = df1['name'].str.replace(',,',',')
df2 = df2.str.rstrip(',')
这会在 NaN 的情况下清除数据并删除不需要的逗号。 例如,
df1:
animal name
lion a
tiger b,c
tiger b,c
bear d,f,g
bear d,f,g
df2:
animal name
lion
tiger x,y
bear
结果:
0 a
1 b,x,y,c
2 b,x,y,c
3 d,f,g
4 d,f,g
感谢您的反馈!
【问题讨论】: