【问题标题】: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 不断抛出数组错误。
【问题讨论】:
标签:
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)
【解决方案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]