包含300多列的空数据帧

2024-09-30 07:24:38 发布

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

我使用以下代码将txt文件中的许多空列插入csv文件,但我无法为任何行或列指定值

data = pd.read_csv('DefaultPermList.txt',sep='\n',header=None)
data = data.set_index(0).T
data.to_csv('./data.csv', index = False)

df = pd.read_csv("data.csv")

我只想在csv文件中为包含300+列且值为0的整行赋值。我还想问,如何为特定的行或列指定一个值,如何比较一个值(比如字符串和列名),以检查它是否与列名匹配,以及如何为它指定一个值1

我也用过这个,但不起作用:

df.loc[len(df.index)] = 0

以下是预期的示例:

APK       Andriod.permission.abc    Andriod.permission.cde     Android.perm.xyz .. up to 300+ columns
abc.apk             0                        0                           0
cde.apk             0                        0                           0

因此,基本上,第一列(APK)将只存储字符串值,而其余列将赋值为0。一旦设置了值,我希望它也保存到我的csv文件中

更新: 我用它来给整行赋值,结果成功了

df.loc[0, :] = 0

新问题是: 我希望所有行和列都为0。除了第一列。第一列将只存储字符串值。 我还想知道如何在特定的行和列索引上赋值。 此外,假设范围是从第2列到第320列,如何设置一个范围来检查特定的字符串名和列名


Tags: 文件csvto字符串txtdfreaddata
3条回答

更新300多列,不包括第一列

由于您有300多个列要更新为零,因此我建议您执行以下操作:

df = pd.read_csv("data.csv")
df.iloc[:,1:] = 0

这将更新除第一列1之外的所有列,使其为零

将特定列更新为零

我想这就是你想要的:

import pandas as pd
df = pd.DataFrame({'APK':['abc.apk','bcd.apk','cde.apk','def.apk']})
df[['abc','bcd','cde','def']] = 0
print (df)

另外,您还可以提供:

df.loc[:,['abc','bcd','cde','def']] = 0

这将仅将指定的列替换为零

这将导致:

       APK  abc  bcd  cde  def
0  abc.apk    0    0    0    0
1  bcd.apk    0    0    0    0
2  cde.apk    0    0    0    0
3  def.apk    0    0    0    0

将DataFrame中的所有值设置为0

在熊猫中,你有几个选择。要将dataframe中的所有值设置为0,只需给出:

df[::] = 0

df.loc[:] = 0

df.iloc[:] = 0

类似地,可以使用以下选项之一更改行的值:

df[1:2] = 1 #to replace row 1 with value = 1

df.loc[1] = 2 #to replace row 1 with value = 2 using loc

df.iloc[1] = 3 #to replace row 1 with value = 3 using iloc

也可以用类似的方式替换列中的值:

df['a'] = 1 # to replace column 'a' with value = 1

df.loc[:,'a'] = 2 # to replace column 'a' with value = 2

df.iloc[:,0] = 3 # to replace first column ('a') with value = 3

您要做的是:

for i in range(len(df.index)):
    df.loc[i] = 0

要根据条件指定值,请执行以下示例:

df.loc[df['value to be compared'] == 'string','column_name'] = 1

在数据框中,可以使用.loc方法为任何单元格、行或列赋值

要将整行的值指定为0,请使用类似以下内容:

df.loc[$row$, $column$] = 0

设置$row$=':'如果需要所有行,则可以按索引或条件选择与多行匹配的行

设置$column$=':'如果需要所有列,也可以指定列的名称或列名列表

例如,如果要将索引1处的行的所有列指定为值0,请使用以下命令:

df.loc[1, :] = 0

更新:如果要将APK=abc.APK的行的列中的所有值更改为0,请使用以下命令:

df.loc[df[df['APK']=='abc.apk'].index, :] = 0

相关问题 更多 >

    热门问题