为了账号安全,请及时绑定邮箱和手机立即绑定

如何将值添加到 ID 相似的行?

如何将值添加到 ID 相似的行?

扬帆大鱼 2023-05-23 15:32:47
我致力于将不同的 CSV 文件合并为:输入 a.csv:myID name  day age111  james Feb 29112  alexs Mar 19113  kevin Jan 18114  bratt Jul 22115  nancy Apr 30输入 b.csv:myID visitedCity111  boston111  san fran111  paris112  texas113  fargo114  austin   114  los alto115  memphis正如它显示的那样,该文件b.CSV具有与 中使用的相同的 myID 列名称a.CSV并包含相似的 id,但是,文件b.CSV包含重复的 ID,该 ID 显示访问了多少个城市。问题是:我如何将输入中的数据合并a.CSV为b.CSV如下所示:myID visitedCity name  day age111  boston      james Feb 29111  san fran    james Feb 29111  paris       james Feb 29112  texas       alexs Mar 19113  fargo       kevin Jan 18114  austin      bratt Jul 22114  los alto    bratt Jul 22115  memphis     nancy Apr 30我已经检查了一些这样的内容,但都不是我想要的。
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

DataFrame 和 Pandas 将是做到这一点的最佳方式。但是,我试图找出这是否也可以使用基本循环来完成。这是我使用列表理解能够做的事情。


我将把每一行用作一个字符串。然后我只需要比较每行中的前 4 个字符。我是这样做的。它只是两行代码。


x = [

'myID name  day age',

'111  james Feb 29',

'112  alexs Mar 19',

'113  kevin Jan 18',

'114  bratt Jul 22',

'115  nancy Apr 30']

y = [

'myID visitedCity',

'111  boston',

'111  san fran',

'111  paris',

'112  texas',

'113  fargo',

'114  austin',

'114  los alto',

'115  memphis']


k = [i.ljust(16,' ')+j[4:] for i in y for j in x if i[:3] == j[:3]]

for x in k: print(x)

输出如下:


myID visitedCity name  day age

111  boston      james Feb 29

111  san fran    james Feb 29

111  paris       james Feb 29

112  texas       alexs Mar 19

113  fargo       kevin Jan 18

114  austin      bratt Jul 22

114  los alto    bratt Jul 22

115  memphis     nancy Apr 30 


查看完整回答
反对 回复 2023-05-23
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

使用merge命令。


>>> import pandas as pandas

>>> adf = pandas.DataFrame([[111, 'james', 'Feb', 29]])

>>> adf.columns = ['myID', 'name', 'day', 'age']

>>> adf

   myID   name  day  age

0   111  james  Feb   29

>>> bdf = pandas.DataFrame([[111, 'boston'], [111, 'san fran']])

>>> bdf.columns = ['myID', 'visitiedCity']

>>> bdf

   myID visitiedCity

0   111       boston

1   111     san fran

>>> df = pandas.merge(bdf, adf, how='outer', on=['myID'], indicator=False)

>>> df

   myID visitiedCity   name  day  age

0   111       boston  james  Feb   29

1   111     san fran  james  Feb   29

可以找到更多信息https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html


查看完整回答
反对 回复 2023-05-23
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

尝试


import pandas as pd

aDf= pd.read_csv('a.csv')

bDf =pd.read_csv('b.csv')


ResultDf=pd.merge( bDf, aDf, how='left', on='myID')


查看完整回答
反对 回复 2023-05-23
  • 3 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信