当前位置: 首页 > 知识库问答 >
问题:

如何在python中将列分成3列

程谭三
2023-03-14

我试图通过移除数据下面的括号将一列值分成3列。但我无法分开。我用下面的代码在python中分离。

Point:
(48.1371079, 11.5753822, 0.0)
(51.5142273, 7.4652789, 0.0)
(51.3406321, 12.3747329, 0.0)

预期产出

Lat        Long       Point
48.1371079 11.5753822 0.0
51.5142273 7.4652789  0.0
51.3406321 12.3747329 0.0

我尝试的代码:

data[['Lat', 'Long', 'Point']] = data.point.str.split(", ",expand=True)

错误:

ValueError                                Traceback (most recent call last)
<ipython-input-42-35ce2b258b1f> in <module>
----> 1 data[['Lat', 'Long', 'Point']] = data.point.str.split(", ",expand=True)

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __setitem__(self, key, value)
   2933             self._setitem_frame(key, value)
   2934         elif isinstance(key, (Series, np.ndarray, list, Index)):
-> 2935             self._setitem_array(key, value)
   2936         else:
   2937             # set column

~\Anaconda3\lib\site-packages\pandas\core\frame.py in _setitem_array(self, key, value)
   2959             if isinstance(value, DataFrame):
   2960                 if len(value.columns) != len(key):
-> 2961                     raise ValueError("Columns must be same length as key")
   2962                 for k1, k2 in zip(key, value.columns):
   2963                     self[k1] = value[k2]

ValueError: Columns must be same length as key

共有3个答案

龚鸿雪
2023-03-14

您可以这样做:

df = pd.DataFrame(df['point'].tolist(), index=df.index)
print(df)

           0          1    2
0  48.137108  11.575382  0.0
1  51.514227   7.465279  0.0
2  51.340632  12.374733  0.0
章德惠
2023-03-14

下面是一种将一系列元组转换为数据帧(即展开元组)的方法:

from io import StringIO
import pandas as pd

# create sample data
df = pd.DataFrame({'Point':
[(48.1371079, 11.5753822, 0.0),
(51.5142273, 7.4652789, 0.0),
(51.3406321, 12.3747329, 0.0),]})

# expand
df = df['Point'].apply(lambda x: pd.Series(x, index=('X', 'Y', 'Z')))
print(df)

           X          Y    Z
0  48.137108  11.575382  0.0
1  51.514227   7.465279  0.0
2  51.340632  12.374733  0.0

Using apply/Series从以下站点获得:https://stackoverflow.com/a/45901030/13608599

曹泉
2023-03-14

如果点:索引,请尝试以下操作:

data = data.reset_index()

for i in list(data.columns):
    data[i] = (data[i]
             .str.replace(',', '')
             .str.replace(' ', '')
             .str.replace('(', '')
             .str.replace(')', ''))

data = data.rename(columns=({
    'level_0': 'Lat',
    'level_1': 'Long',
    'Point:': 'Point'
}))
 类似资料:
  • 问题内容: 我正在处理一个较大的csv文件,并且最后一列的旁边是一串文本,我想用一个特定的定界符来分割它。我想知道是否有使用pandas或python的简单方法? 我想先按空格再在列中按冒号分开,但每个单元格将导致列数不同。我具有重新排列列的功能,因此列位于工作表的末尾,但是我不确定从那里开始如何做。我可以使用内置函数和快速宏在中完成此操作,但是我的数据集记录太多,无法处理。 最终,我想记录约翰·

  • 我有一个火花数据框如下,并希望分裂成3的空间列。 下面是预期的结果。第一项留在text1列,第二项转到text2,其余的都转到text3(如果有)。原始列值可能包含空记录或带有任意数量分隔符的值,分隔符是空格。 提前感谢!

  • 问题内容: 我有一个带有一列的数据框,我想将其分为两列,其中一列标题为,另一列为 我的数据框df如下所示: 我不知道如何使用以达到分割行单元的目的。我可以用来添加一个新列,并用填充它hello。有任何想法吗? 问题答案: 对于以下简单情况: 我有一个带有定界符的文本列,我想要两列 最简单的解决方案是: 或者,你可以使用以下方法自动为拆分的每个条目创建一个带有一列的DataFrame: 如果字符串的

  • 我试图将一个数据列表一分为二,但我不知道如何正确执行。 当我使用dput(a)时,我的数据如下 结构(列表)(V1=结构(c(1L、9L、10L、11L、12L、13L、14L、15L、16L、2L、3L、4L、5L、6L、7L、8L)。标签=c(“1\t1200.30”,“10\t1305.80”,“11\t1263.02”,“12\t1312.67”,“13\t1229.85”,“14\t12

  • 问题内容: 我有两个长度相同的清单: 和 我想在我有的地方创建字典 最好的方法是什么? 问题答案: dict(zip([1,2,3,4], [a,b,c,d])) 如果列表很大,则应使用。 如果键的数量多于值,并且您想为额外的键填写值,则可以使用。 这里,,,和是变量-它会正常工作(只要它们被定义),但你可能是指,如果你希望他们为字符串。 从每个可迭代对象中获取第一个项目,并生成一个元组,然后从每

  • 我有一个列,其中包含该列的名称和值,格式如下: 我不想使用上面的设置,而是希望按以下格式排列列: 问题是这些值在整个列中并不一致,有时我会有这些值的组合,有时没有,有时只有一个,但顺序如何并不重要,所有这些列都必须创建。怎样才能用一种通用的方式调用它们,而不用像这样指定值:

  • 我有: 我想要: 似乎在scala中我可以写:< code>df.select($"value。_1 ",$ "值。_2 ",$ "值。_3"),但这在python中是不可能的。 那么有没有好的办法呢?

  • 问题内容: 我正在尝试使用PIL将照片分成多张。 但它似乎不起作用。它会分割照片,但不会以精确的方式(您可以尝试)。 问题答案: