Итак, я новичок в Python. Я пытался применить то, что я узнал, к проблемам реального мира. Задача, которую я поставил себе, - это...
Я хочу захватить значения двух ячеек '01/01/2018 и '08/01/2018 'и распечатать их в новый файл csv.file под датами значения заголовка. Я также хочу создать новый столбец, который показывает значение, связанное с этой датой в исходном файле csv.
Любая помощь будет оценена по достоинству или точка в правильном направлении.
Hierarchy | Dept | Emp | Alpha | Bravo | Charlie | 01/01/2018 | 08/01/2018|
Hierarchy 1 | Dept 1 | JC | h | o | l | 0 | 2 |
Hierarchy |Dept | Emp | Alpha | Bravo | Charlie | Date |Value |
Hierarchy 1 |Dept 1 | JC | h | o | l | 01/01/2018 | 0 |
Hierarchy 1 |Dept 1 | JC | h | o | l | 08/01/2018 | 2 |
После помощи вкладчиков я выполнил свою задачу, ниже - код, который я использовал! Благодаря сообществу за помощь!
"""
Transforms Data into Desired Format
"""
#import pandas module
import pandas as pd
#create variable where df = to data.csv
df = pd.read_csv('data.csv')
#create new variable for df.columns
cols = df.columns
#use .melt() function to complete data manipulation
transformed_df = pd.melt(df,
id_vars=cols[:6],
value_vars=cols[6:])
#Assert Data has been formatted correctly
print(transformed_df)
#create new csv file with new data
transformed_df.to_csv('melted_data.csv')
print("\nData has been Melted!")
Как упоминает @ChristianSloper в своем комментарии, pd.melt
предназначен для этого. В вашем случае это однострочный:
df
Hierarchy Dept Emp Alpha Bravo Charlie 01/01/2018 08/01/2018
0 Hierarchy_1 Dept_1 JC h o l 0 2
pd.melt(df,
id_vars=df.columns[:-2],
value_vars=df.columns[-2:],
var_name='Date',
value_name='Value')
Hierarchy Dept Emp Alpha Bravo Charlie Date Value
0 Hierarchy_1 Dept_1 JC h o l 01/01/2018 0
1 Hierarchy_1 Dept_1 JC h o l 08/01/2018 2
df = pd.read_csv(path_to_filename)
. И вы можете сохранить результат pd.melt
с помощью df2 = pd.melt(...)
.
Хорошо, я просто собираюсь пойти и предположить, что ваша таблица хранится в файле csv. Поэтому мы начнем с чтения, что в:
import pandas as pd
df = pd.read_csv('mytable.csv',sep='|')
pd.melt(df,
id_vars = ['Hierarchy ', ' Dept ', ' Emp ', ' Alpha ', ' Bravo ', ' Charlie '],
value_vars=[' 01/01/2018 ',' 08/01/2018' ],
var_name='Date',
value_name='Value')
Дает желаемый результат.
id_vars
не были в columns
. Сможете ли вы проверить мое git-репо и дать какие-нибудь советы по написанному мной коду? Ура! github.com/tdle/python