【问题标题】:selecting by label and writing to csv按标签选择并写入 csv
【发布时间】:2019-06-16 11:11:40
【问题描述】:

我是 pandas 的新手,所以希望这是一个简单的解决方法。我正在尝试创建一个仅包含 df.loc[] 中调用的列的 csv 文件。我的 csv 文件当前显示所有可用的行/列,因此选择不起作用。

import requests, json
import pandas as pd

# url and date set earlier
response = requests.post(url, date, headers={'Authorization':'OAuth mycode'})

if response.status_code == requests.codes.ok:
    response_json = response.json()
    print('\n\n\nReturned JSON\n\n\n')
    print(json.dumps(response_json, sort_keys=True, indent=4, separators=(',', ': ')))

    # df = pd.DataFrame.from_dict(response_json)
    df = pd.DataFrame(response_json)
    print(df.keys())
    df.loc[:,['Comment','EndTimeLocalized','Id','StartTimeLocalized']]
    df.to_csv("r1.csv")
    print('\nCSV Created\n')
else:
    response.raise_for_status()

【问题讨论】:

  • 任何具体错误?
  • @PedroLobito 没有错误

标签: python json pandas csv


【解决方案1】:

pd.DataFrame.loc 不是就地操作。

在导出之前分配回df

df = df.loc[:, ['Comment','EndTimeLocalized','Id','StartTimeLocalized']]
df.to_csv('r1.csv')

或者,如果您希望保持df 不变,请在之后立即切片并导出:

df.loc[:, ['Comment','EndTimeLocalized','Id','StartTimeLocalized']].to_csv('r1.csv')

【讨论】:

  • 太棒了,非常感谢!我会接受你的回答,当它让我有几个时。
  • 方法链是目前建议在 pandas 中遵循的样式(即第二个建议)。
  • @PMende,方法链接与to_csv 无关,因为to_csv 返回None,而不是操纵的数据框。这完全取决于 OP 是否希望他们的切片“粘贴”。
  • 这与将df 重新分配为df.loc[...] 以及在返回的数据帧上使用第二种方法有关。
【解决方案2】:

另一种方法是在对to_csv 的调用中将列指定为关键字参数:

df.to_csv('r1.csv', columns=['Comment', 'EndTimeLocalized', 'Id', 'StartTimeLocalized'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 2021-10-24
    相关资源
    最近更新 更多