我有一个很大的csv文件,在其中过滤了我想要的行,并创建了较小的更易于管理的数据帧(称为“ CL”)。每行在Int64中都有一个合同月份和合同年份(我相信)。我想创建一个以日期格式(例如MM-YYYY)将两者合并的列,但遇到困难。
我尝试过将列提取为pandas系列并转换为字符串
series.to_string
以及带有
的各个列CL['CONTRACT MONTH']= CL['CONTRACT MONTH'].astype(str)
后一种方法给我一条消息“ ... SettingWithCopyWarning: 试图在DataFrame的切片副本上设置一个值。 尝试改用.loc [row_indexer,col_indexer] =值“
对此(我刚刚学习Python)有点不知所措,并希望能有所帮助。
答案 0 :(得分:3)
您可以使用+
连接熊猫系列中的字符串。另外,您可以使用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
本身可能不是问题。熊猫经常猜测您是在操作副本而不是视图。如果您通过上述解决方案看到此警告,则可以放心地忽略此警告。