gpt4 book ai didi

python-2.7 - 在python中使用pandas连接后如何为每个数据帧放置标题

转载 作者:行者123 更新时间:2023-12-04 19:32:29 25 4
gpt4 key购买 nike

所以我有 3 个或更多数据帧将组合成一个文件。例如,这将是我的 3 个数据框

            0   100 200 300 400
03/06/2017 0.0 0.1 0.2 0.4 0.6
03/07/2017 1.1 4.4 1.0 ND 4.3

0 100 200 300 400
03/06/2017 ND ND ND ND ND
03/07/2017 4.3 4.2 4.3 ND 4.3

0 100 200 300 400
03/06/2017 0.2 0.5 1.0 0.3 ND
03/07/2017 4.3 1.1 4.3 ND 4.3

合并后,输出应在每个数据框中都有一个标题,如下例所示:
                    HEADER TITLE1                    HEADER TITLE2                  HEADER TITLE3
DATE 0000 0100 0200 0300 0400 0000 0100 0200 0300 0400 0000 0100 0200 0300 0400
03/06/2017 0.0 0.1 0.2 0.4 0.6 ND ND ND ND ND 0.2 0.5 1.0 0.3 ND
03/07/2017 1.1 4.4 1.0 ND 4.3 4.3 4.2 4.3 ND 4.3 4.3 1.1 4.3 ND 4.3

但问题是,当我尝试我的代码时,输​​出在每个数据帧的每一列上方都有一个标题。我想要的是每个数据帧只有 1 个标题。这是我尝试过的:
import pandas as pd
from decimal import Decimal, ROUND_HALF_UP

L=['0000','0100','0200','0300','0400','0500','0600'
,'0700','0800','0900','1000','1100','1200','1300'
,'1400','1500','1600','1700','1800','1900','2000'
,'2100','2200','2300']



df1 = pd.read_csv('Dataframe1.csv')
df1.Date = pd.to_datetime(df1.Date, dayfirst=True)
df1 = df1.pivot_table(values='SampleValues',index="SampleIndex",columns='SampleColumns',aggfunc='max',fill_value="ND")
df1.index = df1.index.map(lambda t: t.strftime('%Y-%m-%d'))
df1 = df1.reindex_axis(L, axis=1)
df1.ix[:,pd.isnull(df1).all()] = "ND"


df2 = pd.read_csv('Dataframe2.csv')
df2.Date = pd.to_datetime(df2.Date, dayfirst=True)
df2 = df2.pivot_table(values='SampleValues',index='SampleIndex',columns='SampleColumns',aggfunc='max',fill_value="ND")
df2.index = df2.index.map(lambda t: t.strftime('%Y-%m-%d'))
df2 = df2.reindex_axis(L, axis=1)
df2.ix[:,pd.isnull(df2).all()] = "ND"

df3 = pd.read_csv('Dataframe3.csv')
df3.Date = pd.to_datetime(df4.Date, dayfirst=True)
df3 = df4.pivot_table(values='SampleValues',index='SampleIndex',columns='SampleColumns',aggfunc='max',fill_value="ND")
df3.index = df4.index.map(lambda t: t.strftime('%Y-%m-%d'))
df3 = df4.reindex_axis(L, axis=1)
df3.ix[:,pd.isnull(df4).all()] = "ND"

keys = ['HEADER TITLE1','HEADER TITLE 2', 'HEADER TITLE 3']

df4 = pd.concat([df1,df2,df3], axis = 1, keys = keys).to_csv("Output.csv", header = True, encoding = 'utf-8')

最佳答案

dfs = [d1, d2, d3]

df_combined = pd.concat(
[df.rename(columns=lambda x: x.zfill(4)) for df in dfs],
keys=['HEADER TITLE{}'.format(i) for i in range(1, len(dfs) + 1)],
axis=1
)

df_combined

enter image description here

csv
print(df_combined.to_csv())

,HEADER TITLE1,HEADER TITLE1,HEADER TITLE1,HEADER TITLE1,HEADER TITLE1,HEADER TITLE2,HEADER TITLE2,HEADER TITLE2,HEADER TITLE2,HEADER TITLE2,HEADER TITLE3,HEADER TITLE3,HEADER TITLE3,HEADER TITLE3,HEADER TITLE3
,0000,0100,0200,0300,0400,0000,0100,0200,0300,0400,0000,0100,0200,0300,0400
03/06/2017,0.0,0.1,0.2,0.4,0.6,ND,ND,ND,ND,ND,0.2,0.5,1.0,0.3,ND
03/07/2017,1.1,4.4,1.0,ND,4.3,4.3,4.2,4.3,ND,4.3,4.3,1.1,4.3,ND,4.3

然而,正如@StephenRauch 指出的那样......你想要的并不是真正的csv......所以,让我们不要-csv!
with pd.option_context('display.width', 1000):
print(df_combined.__repr__())

HEADER TITLE1 HEADER TITLE2 HEADER TITLE3
0000 0100 0200 0300 0400 0000 0100 0200 0300 0400 0000 0100 0200 0300 0400
03/06/2017 0.0 0.1 0.2 0.4 0.6 ND ND ND ND ND 0.2 0.5 1.0 0.3 ND
03/07/2017 1.1 4.4 1.0 ND 4.3 4.3 4.2 4.3 ND 4.3 4.3 1.1 4.3 ND 4.3

关于python-2.7 - 在python中使用pandas连接后如何为每个数据帧放置标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42918251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com