繁体   English   中英

Python Pandas:如何从另一个csv文件更新一个csv文件

[英]Python Pandas: how to update a csv file from another csv file

我们有两个CSV文件: a.csvb.csv

a.csv具有树列: labelitem1item2 b.csv有两列: item1item2 ITEM1ITEM2 a.csv也occurr在b.csv ,这是a.csvb.csv具有相同的物品1项目2,标签中的值a.csv应为1来代替。 如何用大熊猫来应对?


例如:

a.csv:

label    item1     item2
 0         123       35
 0         342       721
 0         876       243

b.csv:

item1     item2
 12        35
 32        721
 876       243

result.csv:

label    item1     item2
 0         123       35
 0         342       721
 1         876       243

我试过了,但是不起作用:

import pandas as pd

df1 = pd.read_csv("~/train_dataset.csv", names=['label', 'user_id', 'item_id', 'behavior_type', 'user_geohash', 'item_category', 'time','sales'], parse_dates=True)
df2 = pd.read_csv(~/train_user.csv", names=['user_id', 'item_id', 'behavior_type', 'user_geohash', 'item_category', 'time', 'sales'], parse_dates=True)
df1.loc[(df1['user_id'] == df2['user_id'])& (df1['item_id'] == df2['item_id']), 'label'] = 1

您可以使用loc和布尔条件屏蔽df(此处表示a.csv),如果满足该条件,则将标签设置为1:

In [18]:

df.loc[(df['item1'] == df1['item1'])& (df['item2'] == df1['item2']), 'label'] = 1
df
Out[18]:
   label  item1  item2
0      0    123     35
1      0    342    721
2      1    876    243

如果要设置所有行值,则可以使用np.where

In [19]:

np.where((df['item1'] == df1['item1'])& (df['item2'] == df1['item2']), 1, 0)
Out[19]:
array([0, 0, 1])
In [20]:

df['label'] = np.where((df['item1'] == df1['item1'])& (df['item2'] == df1['item2']), 1, 0)
df
Out[20]:
   label  item1  item2
0      0    123     35
1      0    342    721
2      1    876    243

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM