Python 如何处理熊猫中的复制粘贴表-重塑列向量

Python 如何处理熊猫中的复制粘贴表-重塑列向量,python,pandas,numpy,Python,Pandas,Numpy,我有一个表是从a复制的,当粘贴到librecalc或excel时,该表占用一个单元格,当粘贴到notebook时,该表变成一个3507x1列。如果我使用pd.read_csv将其作为pandas数据帧导入,我会看到相同的3507x1列,现在我想将其重塑为它最初的501x7阵列 我原以为我可以重铸为一个numpy数组,按照我在numpy中熟悉的方式进行重塑,然后将其放回df中,但pandas的to_numpy方法似乎希望使用一个系列对象(而不是Dataframe),并尝试使用例如 ser= pd.

我有一个表是从a复制的,当粘贴到librecalc或excel时,该表占用一个单元格,当粘贴到notebook时,该表变成一个3507x1列。如果我使用pd.read_csv将其作为pandas数据帧导入,我会看到相同的3507x1列,现在我想将其重塑为它最初的501x7阵列

我原以为我可以重铸为一个numpy数组,按照我在numpy中熟悉的方式进行重塑,然后将其放回df中,但pandas的to_numpy方法似乎希望使用一个系列对象(而不是Dataframe),并尝试使用例如

ser= pd.Series.from_csv('billionaires')        

导致标记化错误。有什么简单的方法可以做到这一点吗?也许我应该放弃这个方向,读html

简单的复制粘贴无法提供任何清晰的列分隔符,因此不可能轻松实现。
您只有空格,但空格也可能不在列值内(如名称或国家/地区),因此不可能指定给
DataFrame。请读取\u csv
列分隔符

但是,如果我将表复制粘贴到文件中,我会注意到规则性。
如果你知道正则表达式,你可以尝试使用。此方法将正则表达式模式中的捕获组提取为数据帧的列。正则表达式应用于序列的每个元素/字符串

然后,您可以尝试找到一个正则表达式模式来捕获行的各个元素,并将它们拆分为单独的列

df = pd.read_csv('data.txt', names=["A"]) #no header in the file
ss = df['A']
rdf = ss.str.extract('(\d)\s+(.+)(\$[\d\.]+B)\s+([+-]\$[\d\.]+[BM])\s+([+-]\$[\d\.]+B)\s+([\w\s]+)\s+([\w\s]+)')
在这里,我试图为链接中的表编写一个正则表达式,第一个表的结果似乎很好

   0                              1       2        3        4                    5            6
0  1                    Jeff Bezos    $121B   +$231M  -$3.94B       United States    Technology
1  3               Bernard Arnault    $104B   +$127M  +$35.7B              France      Consumer
2  4                Warren Buffett   $84.9B  +$66.3M  +$1.11B       United States   Diversified
3  5               Mark Zuckerberg   $76.7B   -$301M  +$24.6B       United States    Technology
4  6                Amancio Ortega   $66.5B   +$303M  +$7.85B               Spain        Retail
5  7                 Larry Ellison   $62.3B   +$358M  +$13.0B       United States    Technology
6  8                   Carlos Slim   $57.0B   -$331M  +$2.20B              Mexico   Diversified
7  9  Francoise Bettencourt Meyers   $56.7B  -$1.12B  +$10.5B              France      Consumer
8  0                    Larry Page   $55.7B   +$393M  +$4.47B       United States    Technology

我使用了
DataFrame.read\u csv
来读取该文件,因为“Series.from\u csv”已被弃用。

简单的复制粘贴不会为您提供任何清晰的列分隔符,因此不可能轻松执行。
您只有空格,但空格也可能不在列值内(如名称或国家/地区),因此不可能指定给
DataFrame。请读取\u csv
列分隔符

但是,如果我将表复制粘贴到文件中,我会注意到规则性。
如果你知道正则表达式,你可以尝试使用。此方法将正则表达式模式中的捕获组提取为数据帧的列。正则表达式应用于序列的每个元素/字符串

然后,您可以尝试找到一个正则表达式模式来捕获行的各个元素,并将它们拆分为单独的列

df = pd.read_csv('data.txt', names=["A"]) #no header in the file
ss = df['A']
rdf = ss.str.extract('(\d)\s+(.+)(\$[\d\.]+B)\s+([+-]\$[\d\.]+[BM])\s+([+-]\$[\d\.]+B)\s+([\w\s]+)\s+([\w\s]+)')
在这里,我试图为链接中的表编写一个正则表达式,第一个表的结果似乎很好

   0                              1       2        3        4                    5            6
0  1                    Jeff Bezos    $121B   +$231M  -$3.94B       United States    Technology
1  3               Bernard Arnault    $104B   +$127M  +$35.7B              France      Consumer
2  4                Warren Buffett   $84.9B  +$66.3M  +$1.11B       United States   Diversified
3  5               Mark Zuckerberg   $76.7B   -$301M  +$24.6B       United States    Technology
4  6                Amancio Ortega   $66.5B   +$303M  +$7.85B               Spain        Retail
5  7                 Larry Ellison   $62.3B   +$358M  +$13.0B       United States    Technology
6  8                   Carlos Slim   $57.0B   -$331M  +$2.20B              Mexico   Diversified
7  9  Francoise Bettencourt Meyers   $56.7B  -$1.12B  +$10.5B              France      Consumer
8  0                    Larry Page   $55.7B   +$393M  +$4.47B       United States    Technology

我使用了
DataFrame.read\u csv
来读取该文件,因为“Series.from\u csv”已被弃用。

我发现转换为numpy数组比我想象的要容易得多-numpy asarray方法可以处理df(而且非常方便,它适用于一般对象,而不仅仅是数字)


我发现转换成numpy数组比我想象的要容易得多——numpy asarray方法可以处理df(而且非常方便,它适用于一般对象,而不仅仅是数字)


但它跳过了任何不符合该模式的内容,例如比尔·盖茨逃脱了正则表达式,允许他发射另一个windows版本。我需要所有的行进行进一步的工作。我没有尝试表中的所有行。如果有具有更复杂模式的行,则应相应地编辑正则表达式。imho上面概述的直接方法比尝试正则表达式并在其崩溃时修补它更容易,但它会跳过任何不符合该模式的内容,例如,比尔·盖茨已跳过正则表达式,允许他发出另一个windows版本。我需要所有的行进行进一步的工作。我没有尝试表中的所有行。如果有具有更复杂模式的行,则应相应地编辑正则表达式。imho上述直接方法比尝试正则表达式并在其中断时修补它更容易