scrapy 如何将不同的CSV列值从不同的列重新分配到新的CSV列?

im9ewurl  于 2022-12-26  发布在  其他
关注(0)|答案(1)|浏览(126)

我已经编写了一个功能齐全的网页抓取软件(scrapy),它可以生成房地产数据作为CSV文件,在大多数情况下,我可以用python处理数据,使其符合Jamovi(stats)格式的要求。
但是我有一个问题:共有25个CSV列,包含许多不同类型的住宅单元要素(空调、停车位、露台、阳台等)。
Unsorted CSV columnsTarget CSV column
到目前为止,我的代码工作方式如下:

column_1=(df['CSV_Col1_Name'])
AC_list=[]

for row in column_1:
    if row == 'Air Conditioned'
    AC_list.append(row)
    else:
     null=('null')
    AC_list.append(null)

df['AC LIST'] = np.array(AC_list)
df.to_csv("My_Data.csv",index=False) #CSV file already indexed

这就完成了在CSV文件中创建一个新列的目的,该列从第一个索引项到最后一个索引项运行:

null
null
null
[...]
Air Conditioned
null
null
Air Conditioned

然而,当我需要对所有剩余的24列重复该过程时,我仍然卡住了。我的目标是,如果CSV列的每一行都包含"空调",那么该字符串将被附加到AC_list中,并取代"空"值(在我的CSV列中,每一行/住宅单元最多只能包含1个AC)。
我试着重复这个过程:

column_2=(df['CSV_Col2_Name'])
AC_list=[]

for row in column_2:
    if row == 'Air Conditioned'
    AC_list.append(row)
    else:
       continue

df['AC LIST'] = np.array(AC_list)

但返回以下错误:* * 数值错误:值的长度(258)与索引的长度(229)**不匹配。我知道这与以下事实有关:在row!='Air Conditioned'的情况下,我没有在AC_list中指定附加值,因为我只希望将'null'值替换为'Air Conditioned'值。
这至少可以说是令人难以置信的,呵呵,我在python上取得了很大的进步,但是重组数据对我来说仍然是一个新的概念。有什么想法可以解决这个问题吗?:)
提前向那些庆祝圣诞节的人表示感谢和圣诞快乐。
向你问好,丹山!

p1tboqfb

p1tboqfb1#

您好金藻:)
非常感谢您的输入。我很抱歉,我的问题被错误地判决。我终于找到了解决方案。基本上,我想为值 * x * 在列A,列B将被追加到同一行的值 * y *。
为此,我使用了df. loc

df.loc[df['Column_A']=='ValueX','Column B']='ValueY'

示例:

    • 输入**
Column_A      Column_B
Banana
Strawberry
Kiwi          
Tomatoe
Kiwi

df.loc[df['Column_A']=='Kiwi','Column B']='Green'
    • 输出**
Column_A      Column_B
Banana
Strawberry
Kiwi          Green      
Tomatoe
Kiwi          Green

我想这就解决了:)

相关问题