更改列名的结构

发布于 2025-01-10 12:15:49 字数 563 浏览 0 评论 0原文

我有列,因为

id_no| 2021-05-19 00:00:00 | 2021-05-20 00:00:00 | decider
 100       20                      20              878
 200       64                      38              917

这里 idno 是索引,其余的是列 我想要输出,因为

id_no| 2021-05-19 | 2021-05-20 | decider
 100       20          20          878
 200       64          38          917

我尝试转换列名称,但只是列名称没有更改,并且列名称采用日期时间格式(人口列除外)。我尝试了下面的代码

for (columnName, columnData) in df.iteritems():
       columnName = pd.to_datetime(columnName)

I have the column as

id_no| 2021-05-19 00:00:00 | 2021-05-20 00:00:00 | decider
 100       20                      20              878
 200       64                      38              917

here idno is the index and the rest are columns
I want the outupt as

id_no| 2021-05-19 | 2021-05-20 | decider
 100       20          20          878
 200       64          38          917

I tried converting the column names but just column name is not getting changed and column names are in datetime format except the population column. I tried below code

for (columnName, columnData) in df.iteritems():
       columnName = pd.to_datetime(columnName)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

动次打次papapa 2025-01-17 12:15:50

当其他列长度不大于10时,我们可以尝试str切片

df.columns = df.columns.astype(str).str[:10]
df
Out[356]: 
   id_no  2021-05-19  2021-05-20  decider
0    100          20          20      878
1    200          64          38      917

We can try str slice when other column length are not greater than 10

df.columns = df.columns.astype(str).str[:10]
df
Out[356]: 
   id_no  2021-05-19  2021-05-20  decider
0    100          20          20      878
1    200          64          38      917
总以为 2025-01-17 12:15:50

更改循环变量只会更改...循环变量,而不是列名称!您必须创建一个表示新列名称的字符串列表,并将其设为新列索引:

new_columns = [df.columns[0]] + \
              pd.to_datetime(df.columns[1:-1]).astype(str).tolist() +\
              [df.columns[-1]]
df.columns = new_columns

Changing a loop variable changes only... the loop variable, not the column name! You must create a list of strings representing the new column names, and make it the new column index:

new_columns = [df.columns[0]] + \
              pd.to_datetime(df.columns[1:-1]).astype(str).tolist() +\
              [df.columns[-1]]
df.columns = new_columns
黑凤梨 2025-01-17 12:15:50

您只需将名称列表分配给 df 的 columns 属性即可。

data = {'id_no': {0: 100, 1: 200},
 '2021-05-19 00:00:00': {0: 20, 1: 64},
 '2021-05-20 00:00:00': {0: 20, 1: 38},
 'decider': {0: 878, 1: 917}}

df = pd.DataFrame(data)

df.columns = ['id_no', '2021-05-19', '2021-05-20', 'decider'] # simple solution
# edit, you can use a list comprehension with conditional
df.columns = [str(x)[0:10] if x[0] == '2' else x for x in df.columns]

输出:

    id_no   2021-05-19  2021-05-20  decider
0   100     20          20          878
1   200     64          38          917

You can just assign a list of names to the columns attribute of your df.

data = {'id_no': {0: 100, 1: 200},
 '2021-05-19 00:00:00': {0: 20, 1: 64},
 '2021-05-20 00:00:00': {0: 20, 1: 38},
 'decider': {0: 878, 1: 917}}

df = pd.DataFrame(data)

df.columns = ['id_no', '2021-05-19', '2021-05-20', 'decider'] # simple solution
# edit, you can use a list comprehension with conditional
df.columns = [str(x)[0:10] if x[0] == '2' else x for x in df.columns]

Output:

    id_no   2021-05-19  2021-05-20  decider
0   100     20          20          878
1   200     64          38          917
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文