Python pandas创建列并添加到DataFrame

des4xlb0  于 10个月前  发布在  Python
关注(0)|答案(2)|浏览(84)

我正在使用pandas从几个表中收集数据。我有一个值列表,我想以列的形式将其添加到表中的每一行循环中。但我不知道如何做到这一点。
现在,将表合并为一个表的代码如下所示

result_table = []
for url in urls_list:
    
    response = s2.get(url=url, headers=headers)
    soup2 = BS(response.text, 'lxml')

    
    try:
        table = pd.read_html(url) 
    
    except:
        print('table not exist')
        continue
    
    result_table.append(table)

final_table = pd.DataFrame() 

for t in result_table:

    final_table = final_table.append(t)

final_table.to_excel("razmeri.xlsx")

字符串
final_table看起来像这样:

|  1   | RowTable1   |
|  2   | RowTable1   |
|  3   | RowTable2   |
|  4   | RowTable2   |
|  5   | .........   |


我想添加列表

list = ['259, 178, 305, .....']


并从列表中的result_table = value指向表的每一行
final_table应该是这样的:

| 259   | RowTable1    |
| 259   | RowTable1    |
| 178   | RowTable2    |
| 178   | RowTable2    |
| 305   | RowTable3    |
| 305   | RowTable3    |


我不知道怎么做,如果有人帮忙,我会很感激的。
pandas版本:1.3.1 python版本:3.8.0

whlutmcx

whlutmcx1#

假设你有这样一个框架:

Col1       Col2
0     1  RowTable1
1     2  RowTable1
2     3  RowTable2
3     4  RowTable2
4     5  RowTable3

字符串
然后,您可以:

lst = [259, 178, 305]
it = iter(lst)

df["Col1"] = df.groupby("Col2")["Col1"].transform(lambda x: [next(it, None)] * len(x))
print(df)


印刷品:

Col1       Col2
0   259  RowTable1
1   259  RowTable1
2   178  RowTable2
3   178  RowTable2
4   305  RowTable3

6ojccjat

6ojccjat2#

我假设你面对的问题是左边的行号实际上是Pandas生成的索引。结合你问题的下一部分,你想把列表作为一列添加。这是你如何做到的:

import pandas as pd

# Just some static values, instead of these you can use your original values
row_table=["RowTable1","RowTable2","RowTable3","RowTable4"]
list_of_nums = [259, 178, 305, 120]

# Creating a dataframe
df = pd.DataFrame({'Num Value': list_of_nums, 'Row Table': row_table})

# index=False ensures you don't get the row indexes 0,1,2,3... along in your csv
df.to_csv('output.csv', index=False)

字符串

相关问题