我有两个如下的csv文件。
In 'order.csv'
date orderName orderNumber
1/7 Tom 1
1/7 Jeny 4
1/7 Brown 2
1/7 Tom 3
1/8 Sky 5
1/8 Blue 7
1/8 Red 6
1/8 Wine 8
1/9 Tom 9
1/9 Earth 11
1/9 Earth 10
In 'run.csv'
date runName runNumber
1/7 Tom
1/7 Jeny
1/7 Tom
1/7 Brown
1/8 Sky
1/8 Blue
1/8 Red
1/8 Wine
1/9 Tom
1/9 Earth
1/9 Earth
我的目标是orderNumber必须放在与日期和orderName相匹配的runNumber内。但问题是命令和运行csv的顺序不同。并且如果orderName在同一日期重复。不必考虑。
在“ result.csv”中
date runName runNumber
1/7 Tom
1/7 Jeny 4
1/7 Tom
1/7 Brown 2
1/8 Sky 5
1/8 Blue 7
1/8 Red 6
1/8 Wine 8
1/9 Tom 9
1/9 Earth
1/9 Earth
在这种情况下,如何使用python方法?
我试图做点什么,但对我来说这是一个很难的问题。
所以我完全在这里问。对不起。
分析解答
从我的经历来看,您似乎不必拥有两个文件,因为它们具有完全相同的结构。您可以做的第一件事是使用下面的Pandas加载csv文件。
import pandas as pd
df = pd.read_csv('order.csv')
然后,您可以在其他列的基础上添加新列。为了摆脱重复,使用Counter(默认的Python库)可能是一个不错的选择。
from collections import Counter
name_cnt = Counter(df['orderName'])
def set_run_number(row):
if name_cnt[row['orderName']] > 1:
return
else:
return int(row['orderNumber'])
df['runNumber'] = df.apply(lambda row: set_run_number(row), axis=1)
它像这样。
date orderName orderNumber runNumber
0 1/7 Tom 1 NaN
1 1/7 Jeny 4 4.0
2 1/7 Brown 2 2.0
3 1/7 Tom 3 NaN
4 1/8 Sky 5 5.0
5 1/8 Blue 7 7.0
6 1/8 Red 6 6.0
7 1/8 Wine 8 8.0
8 1/9 Tom 9 NaN
9 1/9 Earth 11 NaN
10 1/9 Earth 10 NaN