有没有一种方法可以从单个数据列表的列表中形成一个数据帧?

2024-10-02 18:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我从网页复制了一个表,当我将它粘贴到文本文件(或excel)时,该表将显示一个值列表。 下面是示例列表。你知道吗

['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']

我想要那个 第1列第0项 第2栏第1项 第3栏第3项 第4栏第4项

下面是一段很长的路要走(我想)

import pandas as pd
mylist=['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']
city=[]
code=[]
area=[]
for i,line in enumerate(mylist):
    if i%4==0:
        index.append(line)
    if i%4==1:
        code.append(line)
    if i%4==2:
        city.append(line)
    if i%4==3:
        area.append(line)
dict={'code':code,'city':city,'area':area}   
df=pd.DataFrame(dict)

我要找的是上面的代码,但在一个简短的方式,我相信有人有一个聪明的方法来做它,只是我找不到它。。。你知道吗


Tags: 网页city列表if粘贴linecodearea
3条回答

有几种解决方案是可能的。你知道吗

你说你把数据复制到一个文本文件里了。构建数据帧的更简单的解决方案是调用read_csv(doc)。它以文件名作为参数。您还可以提供每个元素的“分隔符”。这里有一个例子。 假设我有以下文本文件:

温度.txt

index, code, city, area
1, 42, Konya, 40.838
42, 62, Tunceli, 7.582

Python

df = pd.read_csv(r"..\\temp.txt", sep=',')
print(df)
#   index code     city    area
# 0     1   42    Konya  40.838
# 1    42   62  Tunceli   7.582

但是,如果已经有Python中的数据(例如在列表中)。伊斯梅尔提供了一个解决方案。这是另一个。可以将一维列表重塑为二维标注列表。代码如下:

Python

mylist = ['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']
def to_matrix(l, n):
    return [l[i:i + n] for i in range(0, len(l), n)]

my_list_reshape = to_matrix(mylist, 4)
print(my_list_reshape)
# [['1',  '42', 'Konya',   '40.838'],
#  ['42', '62', 'Tunceli', '7.582' ]]
df = pd.DataFrame(my_list_reshape, columns=['index', 'code', 'city', 'area'])
print(df)
#   index code     city    area
# 0     1   42    Konya  40.838
# 1    42   62  Tunceli   7.582

将值转换为数组和reshape,最后传递给DataFrame构造函数:

L = ['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']

df = pd.DataFrame(np.array(L).reshape(-1, 4), columns=['code1','code2','city','area'])
print (df)
  code1 code2     city    area
0     1    42    Konya  40.838
1    42    62  Tunceli   7.582

我想你可以用这个pd.DataFrame(list_of_lists, columns=labels)

使用这个this从您的列表中获取列表

def chunks(l, n):
    """Yield successive n-sized chunks from l."""
    for i in range(0, len(l), n):
        yield l[i:i + n]

labels=['index', 'code', 'city', 'area']

df = pd.DataFrame(chunks(mylist, 4), columns=labels)

相关问题 更多 >