按列索引

时间:2017-02-16 09:32:57

标签: python pandas

我需要用格式化的字符串替换日期列。我可以这样做:

df = pd.DataFrame(pd.date_range('2016-01-01', '2016-01-02'), columns=['date'])
df['date'] = df['date'].dt.strftime('%Y-%m-%d')

但是,我想使用列索引而不是列名(数据帧传递给我,我不能保证列名是唯一的)。我可以这样做:

df.iloc[:, 0] = df.iloc[:, 0].dt.strftime('%Y-%m-%d')

这样可以正常工作,但对于长度为1的数据框,它会失败:

df = pd.DataFrame([pd.to_datetime('2016-01-01')], columns=['date'])
df.iloc[:, 0] = df.iloc[:, 0].dt.strftime('%Y-%m-%d')
  

_try_coerce_args中的pandas / core / internals.py(自我,值,其他)

     

- > 2265其他= other.astype('i8',copy = False).view('i8')

     

ValueError:基数为10的int()的无效文字:'2016-01-01'

请注意,按列名称分配仍然有效:

df['date'] = df.iloc[:, 0].dt.strftime('%Y-%m-%d')

我想理解为什么列索引的赋值对于长度为1的数据帧失败,以及我可以做些什么来使它工作。我使用pandas 0.19.1和python 3.5。

1 个答案:

答案 0 :(得分:1)

有点破解,但有效 - 用@Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(); i.setClassName("com.test", "com.test.MainActivity"); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra("data", geoData); context.startActivity(i) } 选择逐列:

[]