因此,我是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 |
答案 0 :(得分:0)
正如@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
答案 1 :(得分:0)
好吧, 我只是继续假设您的表存储在一个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')
给出理想的结果。
答案 2 :(得分:0)
在贡献者的帮助下,我完成了任务,下面是我使用的代码! 感谢社区提供的帮助!
"""
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!")