объединить два файла CSV, используя python - PullRequest
0 голосов
/ 02 августа 2020
• 1000 1006 * и желаемый результат:
step item path_of_logfile value path_of_logfile value
 adi  landlord  /home/abcd.txt 4500 /home/abcd.txt1000
 VC abcd     /home/efgh.txt 3000/home/efgh.txt 2000
 DC   abcd     /home/efgh.txt pass

я сделал через python используя pandas

code
   import pandas as pd
  first = pd.read_csv('1st.csv')
  second = pd.read_csv('2nd.csv')
  merged = pd.concat([first, second], axis=1) 

пожалуйста, помогите мне получить желаемый выходной csvfile

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Код:

import pandas as pd
first = pd.read_csv('1st.csv', sep='    ', engine='python')
second = pd.read_csv('2nd.csv', sep='    ', engine='python')
merged = pd.concat([second, first] ,axis=1, keys = 'step')
print(merged)

Вывод:

s                                    t                                  
  step      item path_of_logfile value step      item path_of_logfile   value
0  adi  landlord       /home/txt  4500  adi  landlord  /home/abcd.txt  1000.0
1   VC      abcd  /home/efgh.txt  3000   vc      abcd   /home/fgh.txt  2000.0
2   DC      abcd  /home/efgh.txt  pass  NaN       NaN             NaN     NaN

Вам необходимо определить ключи внутри pd.concat () , чтобы он мог нацеливаться на столбец, для которого он должен выполнить конкатенацию. Кроме того, я использовал здесь engine = 'python' , иначе будет выдано предупреждение. Я также считаю, что данные здесь имеют 4 разделителя пробелов, поэтому я назначил 4 пробела методу sep .

0 голосов
/ 02 августа 2020

Вы рядом. Вам нужно merge фреймы данных вместо их объединения. В этом случае вы хотите объединить одно и то же значение ключа.

Ваша проблема немного сложнее (не намного), потому что ваши файлы .csv не в стандартной форме, поскольку у вас есть несколько пробелов между значениями вместо запятых ('c' в csv).

Это работает. Следует отметить, что в другом файле есть строчные буквы «v c» и «V C», которые не совпадают. Возможно, это опечатка?

import pandas as pd
first = pd.read_csv('1st.csv', sep= '\s+')
second = pd.read_csv('2nd.csv', sep= '\s+')

merged = first.merge(second, how='outer', on='step')  

print(merged)

merged.to_csv('merged.csv', na_rep='pass', index=False)

Результат:

  step    item_x path_of_logfile_x  value_x    item_y path_of_logfile_y value_y
0  adi  landlord    /home/abcd.txt   1000.0  landlord         /home/txt    4500
1   vc      abcd     /hom/efgh.txt   2000.0       NaN               NaN     NaN
2   VC       NaN               NaN      NaN      abcd    /home/efgh.txt    3000
3   DC       NaN               NaN      NaN      abcd    /home/efgh.txt    pass

CSV-файл:

step,item_x,path_of_logfile_x,value_x,item_y,path_of_logfile_y,value_y
adi,landlord,/home/abcd.txt,1000.0,landlord,/home/txt,4500
vc,abcd,/hom/efgh.txt,2000.0,pass,pass,pass
VC,pass,pass,pass,abcd,/home/efgh.txt,3000
DC,pass,pass,pass,abcd,/home/efgh.txt,pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...