在 Pandas 中将列转换为字符串

新手上路,请多包涵

我有来自 SQL 查询的以下 DataFrame:

 (Pdb) pp total_rows
     ColumnID  RespondentCount
0          -1                2
1  3030096843                1
2  3030096845                1

我想像这样旋转它:

 total_data = total_rows.pivot_table(cols=['ColumnID'])

(Pdb) pp total_data
ColumnID         -1            3030096843   3030096845
RespondentCount            2            1            1

[1 rows x 3 columns]

total_rows.pivot_table(cols=['ColumnID']).to_dict('records')[0]

{3030096843: 1, 3030096845: 1, -1: 2}

但我想确保将 303 列转换为字符串而不是整数,以便我得到这个:

 {'3030096843': 1, '3030096845': 1, -1: 2}

原文由 sontek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

转换为字符串的一种方法是使用 astype

 total_rows['ColumnID'] = total_rows['ColumnID'].astype(str)

但是,也许您正在寻找 to_json 函数,它将键转换为有效的 json(因此您的键转换为字符串):

 In [11]: df = pd.DataFrame([['A', 2], ['A', 4], ['B', 6]])

In [12]: df.to_json()
Out[12]: '{"0":{"0":"A","1":"A","2":"B"},"1":{"0":2,"1":4,"2":6}}'

In [13]: df[0].to_json()
Out[13]: '{"0":"A","1":"A","2":"B"}'

注意:您可以传入缓冲区/文件以将其保存到,以及其他一些选项…

原文由 Andy Hayden 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您需要将所有列转换为字符串,您可以简单地使用:

 df = df.astype(str)

如果您需要除几列之外的所有内容都是字符串/对象,然后返回并将其他内容转换为您需要的任何内容(在本例中为整数),这将很有用:

  df[["D", "E"]] = df[["D", "E"]].astype(int)

原文由 Mike 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题