Сравните столбцы дат из двух разных файлов и добавьте значение - PullRequest
0 голосов
/ 20 июня 2020

У меня есть два разных файла csv dataframe Price и Premium, я хотел бы сопоставить столбец год-месяц в Price столбцу месяца в Premium и добавить столбец премиум-класса в Price

Price файл:

Date              Average   Year-Month
5/29/2020         35.00     May-20
5/28/2020         33.21     May-20
5/27/2020         34.50     May-20
5/26/2020         34.85     May-20
5/22/2020         32.56     May-20

Premium файл:

Month   Premium
Jul-20  1.25
Jun-20 -4.55
May-20 -6.55
Apr-20 -3.20
Mar-20  1.80

Я пробую метод цикла, но он не работает.

result = []
    for value in Prices["Year-Month"]:
        if Premium['Month'] == Prices['Year-Month']
            result.append('Premium')
Prices["Premium"] = result

Очень признателен за ваши советы.

Ответы [ 3 ]

1 голос
/ 20 июня 2020

Вы можете сделать это в одну строку, используя pandas.merge(), например:

import pandas as pd

#price and premium are pandas.DataFrame()
result = pd.merge(price, premium, left_on="Year-Month", right_on="Month", how='inner')
print(result)
#        Date  Average Year-Month   Month  Premium
#0  5/29/2020    35.00     May-20  May-20    -6.55
#1  5/28/2020    33.21     May-20  May-20    -6.55
#2  5/27/2020    34.50     May-20  May-20    -6.55
#3  5/26/2020    34.85     May-20  May-20    -6.55
#4  5/22/2020    32.56     May-20  May-20    -6.55

И вы можете удалить все столбцы, которые не нужны, например:

result.drop(['Month', 'Year-Month'], axis=1, inplace=True)
print(result)
#        Date  Average  Premium
#0  5/29/2020    35.00    -6.55
#1  5/28/2020    33.21    -6.55
#2  5/27/2020    34.50    -6.55
#3  5/26/2020    34.85    -6.55
#4  5/22/2020    32.56    -6.55
0 голосов
/ 20 июня 2020
import pandas as pd
df1 = pd.read_csv('price.csv')
df2 = pd.read_csv('premium.csv')
merged_df = pd.merge(df1,df2,left_on='Year-Month',right_on='Month',how='inner')
merged_df = merged_df.drop(['Month'],axis=1)
merged_df.to_csv('price-premium.csv',index=False)
0 голосов
/ 20 июня 2020

используя pandas:

import pandas as pd

a = pd.read_csv("filea.csv")
b = pd.read_csv("fileb.csv")

# Rename the column of a.csv that should match the ones in b.csv
b = b.rename(columns={'Year-Month': 'Month'})

b = b.dropna(axis=1)

merged = a.merge(b, on='Month')
merged.to_csv("output.csv", index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...