-1

我有一个如下所示的 .csv 表:

原始csv

我想获得一个新的 .csv 数据,如下所示:

新的 csv

我已经明白我在第一列中有第二个具有 SITENAMES 唯一值的 csv,但现在我正在努力将 SPECIESNAMES 附加到第二列中。

uri = 'file:///C:/Users/t/Desktop/T/Natura/Python/20220214_Natura2000_specieslist.txt'
csvLyr = QgsVectorLayer(uri, "csvLayer", "delimitedtext")

spalten = ["SITECODE"]
sitecodes = pd.read_csv(uri, usecols=spalten)

spalten2 = ["SPECIESNAME_deutsch"]
species = pd.read_csv(uri, usecols=spalten2)

#### Schritt 2: Mithilfe von unique() die unique values der Sidecodes erhalten und als neue Spalte in eine csv schreiben

sitecodes_unique = sitecodes.SITECODE.unique()
print(sitecodes_unique)
print(len(sitecodes_unique))

path = 'C:/Users/t/Desktop/T/Natura/Python/Ergebnisse'
if not os.path.isdir(path):
   os.makedirs(path)


with open('C:/Users/t/Desktop/T/Natura/Python/Ergebnisse/sitecodes_namen.csv', 'w+', newline='') as f:
   wr = csv.writer(f)
   for line in sitecodes_unique:
       sitecodes_unique_split = line.split(',')
       wr.writerow(sitecodes_unique_split)
4

1 回答 1

0

试试这个自然的 python 代码,一个可行的替代方案,它直接调用 csv 文件而不是 txt。我尝试使用@JonSG 提到的集合:

sitecodes = pd.read_csv('file:///C:/Users/t/Desktop/T/Natura/Python/20220214_Natura2000_specieslist.csv', index_col= False)
sitecodes_df = pd.DataFrame(sitecodes,columns = sitecodes.columns)
sitecodes_namen = defaultdict(list)
for i in range(len(sitecodes_df)):
    if sitecodes_df['SITECODE'][i] in sitecodes_namen.keys():
        sitecodes_namen[sitecodes_df['SITECODE'][i]]+=','+sitecodes_df['SPECIESNAME_deutsch'][i]
else:
    sitecodes_namen[sitecodes_df['SITECODE'][i]] = sitecodes_df['SPECIESNAME_deutsch'][i]
df = pd. DataFrame(list(sitecodes_namen.items()), columns = sitecodes.columns)
df.to_csv('C:/Users/t/Desktop/T/Natura/Python/Ergebnisse/sitecodes_namen.csv',index=False)
于 2022-02-17T21:07:15.447 回答