【发布时间】:2020-12-01 22:49:55
【问题描述】:
首先,我刚开始使用 pandas,我的任务是我有两个 csv 文件,我读取它们,比较并附加它们在两个文件中占用的行。我正在使用熊猫数据框。现在我必须将它写回 csv,在这些位置附加额外的列。我正在考虑使用 dict 或列表并将它们附加到最后,但也许有更有效和优雅的解决方案。
df1_index = 0
df1['position'] = 0
for row in df1['Names']:
ur = row.upper()
df1_index += 1
df2_index = 1
for line in df2['Students']:
ul = line.upper()
if ur == ul:
df1['position'].append(row + " in second file: " + str(df2_index) + " row.")
print(row + " is also present in the second file in " + str(df2_index) + " row.")
print(line + " is also present in the first file in " + str(df1_index) + " row.")
df2_index += 1
编辑: 上面的方法效率很差,我得概括一下问题
所以我有两个 csv 文件: csv1.csv:
- 2010-12-10,史蒂夫,乔布斯,
- 20 2010-12-12,埃隆,马斯克,
- 23 2011-01-02,拉里,佩奇,25
csv2.csv:
- 2015-01-03,史蒂夫·乔布斯,34
- 2015-02-13,埃隆·马斯克,27 岁
- 2015-01-17,拉里佩奇,18
- 2015-09-11,史蒂夫·乔布斯,25 岁
任务是通过名称 ofc 在这两个文件中查找相似之处,并添加一行(在新列中)及其来自另一个文件的索引/索引。 现在我提取列(从 csv1 合并 2 并作为新列追加,都作为 DataFrames),将它们大写,然后我可以在相反的文件中打印它们的位置(非常原始,嵌套循环和外部 int 索引)。 pandas 是否提供了一些工具来获得我想要的东西?您对可能的解决方案有任何想法吗?我应该更多地了解什么? ;)
ex 的期望输出。 csv1:
- 2010-12-10,史蒂夫,乔布斯,20,[1,4]
- 2010-12-12,埃隆,马斯克,23 岁,
- 2011-01-02,拉里,佩奇,25,
csv2:
csv2.csv:
- 2015-01-03,史蒂夫·乔布斯,34,1
- 2015 年 2 月 13 日,埃隆·马斯克,27 岁,
- 2015-01-17,拉里佩奇,18,
- 2015-09-11,史蒂夫·乔布斯,25,1
【问题讨论】:
-
您的具体问题是什么?
-
如何将 ur 和 ul 的位置添加到相反的文件中,以及我对字典的想法(将多个值添加到一个索引)是否是一个好的想法,或者是否还有其他更有效的想法。
-
为什么不使用
.merge()来标记两个数据集中的行? -
我不确定,我必须在两个原始文件中保留记录索引,以便在最后附加它们