我有一个大的csv文件,我已经过滤掉了我想要的行,并创建了更小的更易于管理的数据帧(称为“CL”)。 Int64中的每一行都有合约月和合约年(我相信)。我想创建一个以日期格式(例如,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经常猜测你是在副本而不是视图上操作。如果您使用上述解决方案,可以安全地忽略此警告。