示例我有这两个csv,如何覆盖列类型
的值在a.csv或替换,如果它匹配列水果
中的字符串在a.csv和b.csv
a.csv
fruit,name,type
apple,anna,A
banana,lisa,A
orange,red,A
pine,tin,A
b.csv
fruit,type
banana,B
apple,B
如何输出:或者如何覆盖
fruit,name,type
apple,anna,B
banana,lisa,B
orange,red,A
pine,tin,A
我正在尝试使用熊猫,但我不知道接下来会发生什么
df1=pd.read_csv("sha1_vsdt.csv",delimiter=",",error_bad_lines=False,engine = 'python',quoting=3)
df2=pd.read_csv("final.csv",delimiter=",",error_bad_lines=False,engine = 'python',quoting=3)
df = pd.merge(df1, df2, on='SHA-1', how='outer')
您可以对齐索引,更新索引,然后重置索引:
# align indices
df1 = pd.read_csv(s1).set_index('fruit')
df2 = pd.read_csv(s2).set_index('fruit')
# update
df1.update(df2)
# reset index
res = df1.reset_index()
print(res)
fruit name type
0 apple anna B
1 banana lisa B
2 orange red A
3 pine tin A
设置
from io import StringIO
s1 = StringIO("""fruit,name,type
apple,anna,A
banana,lisa,A
orange,red,A
pine,tin,A""")
s2 = StringIO("""fruit,type
banana,B
apple,B""")
您不需要合并,这可以通过一个简单的来实现。loc(位置):
df2.set_index('fruit', inplace=True)
mask = df1.fruit.isin(df2.index)
df1.loc[mask, 'type'] = df2.loc[df1.loc[mask, 'fruit'], 'type'].values
fruit name type
0 apple anna B
1 banana lisa B
2 orange red A
3 pine tin A
根据你的意见
import pandas as pd
df1=pd.read_csv("a.csv")
df2=pd.read_csv("b.csv")
df = pd.merge(df1, df2, on='fruit', how='outer')
df['type_x'] = df['type_y'].combine_first(df['type_x'])
del df["type_y"]
df = df[pd.notnull(df['name'])]
输入df1
fruit name type
0 apple anna A
1 banana lisa A
2 orange red A
3 pine tin A
输入df2
fruit type
0 banana B
1 lemon B
输出
fruit name type_x
0 apple anna A
1 banana lisa B
2 orange red A
3 pine tin A
如果您有具有不同列名的不同文件
import pandas as pd
df1=pd.read_csv("a.csv")
df2=pd.read_csv("b.csv")
df = pd.merge(df1, df2, on='fruit', how='outer')
df[df.columns[2]] = df[df.columns[3]].combine_first(df[df.columns[2]])
del df[df.columns[3]]
df = df[pd.notnull(df[df.columns[1]])]
问题内容: 下图中的高亮显示了我要实现的逻辑。我意识到语法不正确。 只有在目标表中其列之一的值为空且源表中的对应值不为空的情况下,才可以有条件地更新MERGE语句中的记录吗? 您如何建议重写? 问题答案: 您也许可以使用。
给定两个csv文件: 我想创建一个新的csv文件,我们将调用UpdatedList.csv,它具有来自File1.csv的每个条目减去SKU在File1.csv和File2.csv.的任何行 下面的代码会做我想做的,但是我相信有一个更有效的方法。没有循环我怎么能做到这一点?我的代码如下。
问题内容: 我正在尝试合并以下两个文件(交集) 第二个文件Test2.txt 然后最终结果 我确实如下所示 我只是注意到这是联盟设置的。包括所有数据Test1和Test2。 我只希望对Intersection案例显示我期望的结果。仅(1,2,3,4) 你们有什么主意吗?谢谢! 问题答案:
问题内容: 我有两个数组 我需要将此合并到以编程方式匹配用户ID的单个数组 最终的数组应该像 有没有一种更清洁的方法来执行此操作,我的应用程序中有下划线库,但是我找不到一种干净的方法来实现此目的 问题答案: 使用下划线的解决方案: _.map 跨成员 使用 _.findWhere 查找匹配的成员信息 **** _。省略 匹配成员信息中的ID密钥 _。 使用会员信息 扩展 会员
我有两个。名为all_cv的csv文件。csv和common_cv。csv文件。首先,我用pandas制作了两个csv文件,然后将数据保存到一个名为join_cv_common的新文件中。由熊猫制作。在那之后,我整理了join_cv_common。熊猫的csv文件如下所示,存储的数据存储到名为sorted_cv_common的新文件中。csv。我想重写pandas的这两个函数——concat和so
我有两个文件file1。txt和file2。txt。 文件1。文本 file2.txt 我想匹配文件1的第1、2和3列。带有文件2第1、4和5列的txt。txt。如果匹配,则将匹配行与以下行一起打印,直到,但不要打印。我用“awk”命令试过了