求助各位老师,按照年份进行行列转置?
本帖最后由 caeser 于 2022-5-19 21:56 编辑求助各位老师,我怎么把原始数据格式按照年份进行行列转置?
你发出来的数据就是转置后的...
恐怕还得自己写vba代码
现成的转置都不符合你的要求 一、简单的方法用excel数据透视表。1.在B列插入一列序号“num”,B2输入公式“=COUNTIF($A$2:A2,A2)”向下填充。2.依次选择“插入”、“数据透视表”、“确定”。3.数据透视表字段对应选择,列“date”,行“num”,值“price”,OVER.
二、用pandas思路,A列去重当列索引,依次提取拼接。 import pandas as pd
file=r'D:\temp\测试数据样本.csv'
newdf = pd.DataFrame()
with open(file,'r') as f:
df = pd.read_csv(f,encoding='gb2312')
dfid = df['date'].drop_duplicates().reset_index(drop=True)
for i in dfid:
newdf=df["price"].where(df["date"]==i).dropna(how='any').reset_index(drop=True) import csv
from itertools import zip_longest
def readcsv(filepath):
data = {}
with open(filepath,'r') as f:
reader = csv.reader(f)
for row in reader:
if row not in data:
data] = []
data].append(row[-1])
return data
def writecsv(filepath, data):
with open(filepath, 'w', newline='') as f:
writer = csv.DictWriter(f, data.keys())
writer.writeheader()
write_datas = []
for each in zip_longest(*data.values(), fillvalue=''):
write_datas.append(dict(zip(data.keys(), each)))
writer.writerows(write_datas)
if __name__ == '__main__':
result = readcsv('./test.csv')
writecsv('./result.csv', result)
Twilight6 发表于 2022-5-19 22:19
你发出来的数据就是转置后的...
不好意思,疏忽了 elven08 发表于 2022-5-20 09:01
一、简单的方法用excel数据透视表。1.在B列插入一列序号“num”,B2输入公式“=COUNTIF($A$2:A2,A2)”向下 ...
谢谢,excel,我能搞定的。但pandas不会。 qq1151985918 发表于 2022-5-20 09:59
非常感谢大神老师,可惜最佳答案只能设置一个,抱歉了 elven08 发表于 2022-5-20 09:37
老师,能不能麻烦一个事,您写的代码我还是看得不是太懂,可以写个注释吗?谢谢 caeser 发表于 2022-5-21 11:52
老师,能不能麻烦一个事,您写的代码我还是看得不是太懂,可以写个注释吗?谢谢
import pandas as pd #导入pandas,简写pd
file=r'D:\temp\测试数据样本.csv' #赋值路径
newdf = pd.DataFrame() #新建空数据
with open(file,'r') as f: #打开文件,简写f
df = pd.read_csv(f,encoding='gb2312') #读取文件f的数据赋值给df
dfid = df['date'].drop_duplicates().reset_index(drop=True) #date列数据去重,重置索引,得到需要转置数据的列索("2015年","2016年",……)引赋值给dfid
for i in dfid: #遍历目标(列索引)"2015年","2016年",……
newdf=df["price"].where(df["date"]==i).dropna(how='any').reset_index(drop=True)
#逐个读取date在列索引名“2015年"的数据“price”,删除空值,重置索引,例:newdf[”2015年“]=
#最后输出成你要的格式就行。 elven08 发表于 2022-5-22 08:01
import pandas as pd #导入pandas,简写pd
file=r'D:\temp\测试数据样本.csv' # ...
谢谢!
页:
[1]