我有一个大型 csv 文件,我在其中过滤掉了所需的行并创建了更小、更易于管理的数据框(称为“CL”)。每行都有一个 Int64 格式的契约(Contract)月份和契约(Contract)年份(我相信)。我想创建一个以日期格式(例如 MM-YYYY)组合两者的列,但遇到困难。
我尝试将列提取到 pandas 系列并转换为字符串
series.to_string
以及带有
的各个列CL['CONTRACT MONTH']= CL['CONTRACT MONTH'].astype(str)
后一种方法给我一条消息“...SettingWithCopyWarning: 尝试在 DataFrame 的切片副本上设置一个值。 尝试使用 .loc[row_indexer,col_indexer] = value 代替”
我对此有点难以理解(刚刚学习Python),希望得到一些帮助。
最佳答案
您可以使用 +
连接 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 通常会猜测您正在操作副本而不是 View 。如果您在上述解决方案中看到此警告,您可以安全地忽略此警告。
关于python - 连接数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51140575/