【问题标题】:Python pandas number frequencyPython pandas 数字频率
【发布时间】:2018-11-26 05:22:53
【问题描述】:

我有一个包含两个特定列的 csv 文件。一个是用空格分隔的数字列表。第二个是一个数字。

使用 pandas,我正在加载文件,但尝试将数字从字符串转换为整数。到目前为止,我有这个代码:

data = pd.read_csv(file)
data['col 0'] = data['col 0'].str.split(' ')

我不知道如何将 col 0 字符串数组转换为整数数组。函数 .astype 不断抛出数组错误。

【问题讨论】:

  • 拿出你的第二个问题,放到一个单独的问题中,请每个帖子问一个问题。另外,请提供minimal reproducible example

标签: python pandas scikit-learn data-science


【解决方案1】:

如果“col 0”类似于“0 1 2 3”并且您希望该列变为“0123”,则可以使用 .replace() 方法将“”(空格)替换为“”(空字符串)。

df['col 0'] = df['col 0'].astype(str).apply(lambda x:x.replace(" ", ""))

正如@coldspeed 所说,请将您的问题分为两部分。

要将 str 类型转换回 int 只需使用 astype(np.int)

【讨论】:

  • 我希望它看起来像 [0, 1, 2, 3]
【解决方案2】:

如果您尝试将字符串列表转换为整数列表,则此方法有效:

d = {'col1': ["1 2 3 4 5 6 7"], 'col2': [3]}
df_example = pd.DataFrame(data=d)
df_example.col1 = df_example.col1.apply(lambda x: list(map(int, x.split(" "))))

然后你有一个整数列表,如

所示
df_example.col1[0]
out: [1, 2, 3, 4, 5, 6, 7]
[x+1 for x in df_example.col1[0]]
out: [2, 3, 4, 5, 6, 7, 8]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 2019-07-23
    • 2016-03-28
    • 1970-01-01
    相关资源
    最近更新 更多