【问题标题】:concatenating Columns within a dataframe连接数据框中的列
【发布时间】:2018-12-10 22:35:40
【问题描述】:

我有一个大的 csv 文件,我在其中过滤掉了我想要的行并创建了更小的更易于管理的数据框(称为“CL”)。每行在 Int64 中都有一个合同月和合同年(我相信)。我想创建一个以日期格式(例如,MM-YYYY)将两者结合起来并且遇到困难的列。

我尝试将列提取到熊猫系列并转换为字符串

series.to_string

以及带有

的各个列
CL['CONTRACT MONTH']= CL['CONTRACT MONTH'].astype(str)

后一种方法给我一条消息“... SettingWithCopyWarning: 试图在 DataFrame 中的切片副本上设置值。 尝试改用 .loc[row_indexer,col_indexer] = value"

对此我有点过头了(刚刚学习 Python),希望能得到一些帮助。

【问题讨论】:

  • 您想将合并后的日期存储为整数吗?

标签: python string pandas dataframe series


【解决方案1】:

您可以使用+ 连接 Pandas 系列中的字符串。此外,您可以使用pd.Series.str.zfill 来确保月份始终有 2 个字符:

df = pd.DataFrame([[10, 1995], [3, 1996], [2, 1998], [5, 2000]],
                  columns=['MONTH', 'YEAR'])

df['DATE'] = df['MONTH'].astype(str).str.zfill(2) + '-' + df['YEAR'].astype(str)

print(df)

   MONTH  YEAR     DATE
0     10  1995  10-1995
1      3  1996  03-1996
2      2  1998  02-1998
3      5  2000  05-2000

您的SettingWithCopyWarning 可能不代表问题本身。 Pandas 通常会猜测您正在对副本而不是视图进行操作。如果您在上述解决方案中看到此警告,则可以放心地忽略它。

【讨论】:

  • 一个小障碍...如果我希望新的“日期”成为索引,我该怎么做?我试过 df.set_index(df['DATE']) 但没有用。
  • @ChrisL,重新分配回df,即df = df.set_index(df['DATE'])
猜你喜欢
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
  • 2022-08-20
  • 2021-02-09
  • 2020-08-11
  • 1970-01-01
相关资源
最近更新 更多