gpt4 book ai didi

python - Pandas Dataframe 添加标题而不替换当前标题

转载 作者:太空狗 更新时间:2023-10-29 21:31:54 32 4
gpt4 key购买 nike

如何在不替换当前标题的情况下向 DF 添加标题?换句话说,我只想将当前 header 向下移动并将其作为另一条记录添加到数据框中。

*次要问题:如何将表(示例数据框)添加到 stackoverflow 问题?

我有这个(注意标题以及它是如何作为一行添加的:

   0.213231  0.314544
0 -0.952928 -0.624646
1 -1.020950 -0.883333

我需要这个(所有其他记录都向下移动并添加一个新记录)(另外:我无法正确读取 csv,因为我正在使用 s3_text_adapter 进行导入,而且我无法弄清楚如何使用类似于 pandas read_csv 的忽略 header 的参数):

       A          B
0 0.213231 0.314544
1 -1.020950 -0.883333

最佳答案

另一种选择是将其添加为列索引的附加级别,使其成为多索引:

In [11]: df = pd.DataFrame(randn(2, 2), columns=['A', 'B'])

In [12]: df
Out[12]:
A B
0 -0.952928 -0.624646
1 -1.020950 -0.883333

In [13]: df.columns = pd.MultiIndex.from_tuples(zip(['AA', 'BB'], df.columns))

In [14]: df
Out[14]:
AA BB
A B
0 -0.952928 -0.624646
1 -1.020950 -0.883333

这样做的好处是可以为 DataFrame 保留正确的数据类型,因此您仍然可以对 DataFrame 进行快速正确的计算,并允许您通过新旧列名进行访问。

.

为了完整起见,这里是 DSM(已删除的答案),使列成为一行,如前所述,这通常不是一个好主意:

In [21]: df_bad_idea = df.T.reset_index().T

In [22]: df_bad_idea
Out[22]:
0 1
index A B
0 -0.952928 -0.624646
1 -1.02095 -0.883333

请注意,dtype 可能会改变(如果这些是列名而不是正确的值),就像在这种情况下......所以如果你真的打算对此做任何工作,请小心,因为它可能会更慢甚至可能失败:

In [23]: df.sum()
Out[23]:
A -1.973878
B -1.507979
dtype: float64

In [24]: df_bad_idea.sum() # doh!
Out[24]: Series([], dtype: float64)

如果列名实际上是被误认为标题行的行,那么您应该在读取数据时更正此错误(例如 read_csv 使用 header=None)。

关于python - Pandas Dataframe 添加标题而不替换当前标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19530708/

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