我有两个.csv
文件。
"数据. csv":
| 识别号|开始_秒|结束_秒|标号|
| - ------| - ------| - ------| - ------|
| - -PJHxphWE|三万|四万|"/月/09日第0天,/吨/日00088 "|
| - -浙V派1s|五万|六万|"/m/012xff "|
'labels.csv'(此文件中有大约500个标签,但仅向您展示其外观):
| 索引|标号|标签_en|
| - ------| - ------| - ------|
| 无|/月/09x0r| "演讲"|
| 1个|/月/05日|"男人说话,男人说话"|
我想取"data.csv"中的标签,将它们与"labels.csv"中的标签进行比较,然后将相应的labels_en
保存到"data.csv"中的新列。
正如您所看到的,可能有多个标签需要与'data.csv'标签进行比较,但是它们都在一个字符串中,如表的第一行所示"/m/09x0r,/t/dd00088 "--这是两个不同的值,需要为其查找相应的labels_en。
标签不包含在""中也有一些困难,因此"data. csv"标签中的数据类型与"labels. csv"标签中的数据类型不同。
我该怎么做呢?我已经在python中尝试了一些不同的东西,但是没有任何乐趣。有人能给我一些建议吗?或者至少给我指出正确的方向。
目前为止我试过的代码是:
import pandas as pd
df2 = pd.read_csv('labels.csv')
df1 = pd.read_csv('data.csv')
merged_df = pd.merge(df2, df1, on='labels')
for index, row in merged_df.iterrows():
labels = row['labels']
string = row['labels_en']
df2.loc[df2['labels'] == labels, 'labels'] = string
df2.to_csv('modified_csv.csv', index=False)
但我不认为它甚至还没有接近,pd.merge()
不工作,因为标签的类型是不同的。
1条答案
按热度按时间nnsrf1az1#
对于您的问题,将
df1
的labels
替换为df2
的labels
的最佳方法可能是,将df2
的labels
和labels_en
列替换为dictionary
,并在替换中使用它们。下面是执行此操作的代码:
我们在这里做的是,首先导入数据.csv和标签.csv文件。使用
labels.csv
文件制作字典。并使用字典替换df1
中以“”分隔的labels
。