为了账号安全,请及时绑定邮箱和手机立即绑定

有没有一种方法可以组合 Pandas 中的多个列,可以将某些列中的所有数据连接到一列中

有没有一种方法可以组合 Pandas 中的多个列,可以将某些列中的所有数据连接到一列中

湖上湖 2023-10-06 18:34:22
我希望这个问题很清楚,但我正在研究 Zillow 房屋销售数据,并且遇到了一个问题,即能够将某些年份的所有月份合并到新声明的“年份”变量。这基本上应该将包含 Jan-YY、Feb-YY、Mar-YY...等的所有数据存储为 YY。我尝试过 Pandas 内置的函数,例如Stack()和Pivot(),但这些似乎不起作用。如果没有可行的方法来做到这一点,我有什么选择?提前致谢!示例:采用 Column1 = '1/31/1996'和 Column2 = '2/28/1996' …等。和 Column12 = '12/31/1996'并组合成一个名为Y1996的新列。这比每月细分更容易分析。我的代码:  import pandas as pd  import numpy as np  import statsmodels.api as sm  import matplotlib.pyplot as plt   %matplotlib inline  zil = pd.read_csv('zillow.csv')  df_zil = pd.DataFrame(df_zil)  df_zil.head(4)  #My attempt at merging into one  y1996 = (df_zil['1/31/1996'] + df_zil['3/31/1996'] + df_zil['4/30/1996'] + df_zil['5/31/1996'] +   df_zil['6/30/1996'] + df_zil['7/31/1996'] + df_zil['8/31/1996'] + df_zil['9/30/1996'] +   df_zil['10/31/1996'] + df_zil['11/30/1996'] + df_zil['12/31/1996'])如何通过 Excel 格式化数据的屏幕截图 - 从第一列开始参考 Zillow 数据: https: //www.zillow.com/research/data/
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

我认为你需要与支点相反的东西——融化。您的数据采用“宽”格式,如果将数据转换为“高”格式,则可以更轻松地进行此汇总。获得高格式的数据后,您可以使用 groupby 来汇总同一年内的值。

我下载了房屋库存和销售数据集,并编写了一个简短的程序来汇总同一年的所有值。

代码:

import pandas as pd


df = pd.read_csv("Metro_invt_fs_uc_sfrcondo_smoothed_month.csv")

# Take all of the columns after the index and convert them into additional rows

df = df.melt(id_vars=["RegionID", "SizeRank", "RegionName", "RegionType", "StateName"], var_name="Date")

# Drop date, but keep year

df["Year"] = pd.to_datetime(df["Date"]).dt.year

df = df.drop("Date", axis="columns")

# Aggregate each year

df = df.groupby(["RegionID", "SizeRank", "RegionName", "RegionType", "StateName", "Year"], as_index=False).sum()

print(df)

输出:


     RegionID  SizeRank                         RegionName RegionType StateName  Year    value

0      394304        74                          Akron, OH        Msa        OH  2017   3576.0

1      394304        74                          Akron, OH        Msa        OH  2018  42625.0

2      394304        74                          Akron, OH        Msa        OH  2019  39078.0

3      394304        74                          Akron, OH        Msa        OH  2020  21532.0

4      394308        60                         Albany, NY        Msa        NY  2017   2969.0

..        ...       ...                                ...        ...       ...   ...      ...

475    753906        75  North Port-Sarasota-Bradenton, FL        Msa        FL  2020  73953.0

476    753924        54                 Urban Honolulu, HI        Msa        HI  2017   3735.0

477    753924        54                 Urban Honolulu, HI        Msa        HI  2018  50079.0

478    753924        54                 Urban Honolulu, HI        Msa        HI  2019  57413.0

479    753924        54                 Urban Honolulu, HI        Msa        HI  2020  35522.0


[480 rows x 7 columns]


查看完整回答
反对 回复 2023-10-06
  • 1 回答
  • 0 关注
  • 56 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信