将 for 循环的值附加到数据框
Append values of for loop to dataframe
下面的代码可以工作并打印值,但我需要将值附加到带有列 'NAME' 和 'SystemName' 的循环数据框。
def name():
for i in conn.Win32_LogicalDisk():
if i.NAME is not None:
print(i.NAME)
print(i.SystemName)
我尝试了不同的方法,例如打印输出捕获、设置值、创建变量。我不能。
df['NAME'].set_value = i.NAME
df['Systemname'].set_value = i.SystemName
输出
| NAME | SystemName |
|------|------------|
| C: | aaaaa |
| D: | bbbbb |
与其尝试为每一行附加到空数据框,不如为每一列创建数组,然后在这些列已满时使用这些列创建数据框。
names = []
systemnames = []
for i in conn.Win32_LogicalDisk():
names.append(i.NAME)
systemnames.append(i.SystemName)
df = pd.DataFrame(list(zip(names, systemnames)),columns=['NAME', 'SystemName'])
您可以使用 pd.concat
。您需要在循环的每次迭代中创建一个 DataFrame,然后将其连接到另一个原始 DataFrame。
在你的情况下:
def name():
# Create Empty DataFrame
df = pd.DataFrame(columns = ['NAME', 'Systemname'])
for i in conn.Win32_LogicalDisk():
if i.NAME is not None:
new_df = pd.DataFrame(data = [[i.Name, i.SystemName]], columns = ['NAME', 'Systemname'])
df= pd.concat([df, new_df])
如果你喜欢one-liner:
def name():
# Create Empty DataFrame
df = pd.DataFrame(columns = ['NAME', 'Systemname'])
for i in conn.Win32_LogicalDisk():
if i.NAME is not None:
df = pd.concat([df, pd.DataFrame(data = [[i.Name, i.SystemName]], columns = ['NAME', 'Systemname'])])
您可以直接构建数据框,无需任何附加等:
def name():
return pd.DataFrame(
([i.Name, i.SystemName] for i in conn.Win32_LogicalDisk()
if i.Name is not None),
columns=['NAME', 'SystemName']
)
如果您需要在函数中对数据框执行其他任务:
def name():
df = pd.DataFrame(
([i.Name, i.SystemName] for i in conn.Win32_LogicalDisk()
if i.Name is not None),
columns=['NAME', 'SystemName']
)
# ... do the tasks ...
return df
下面的代码可以工作并打印值,但我需要将值附加到带有列 'NAME' 和 'SystemName' 的循环数据框。
def name():
for i in conn.Win32_LogicalDisk():
if i.NAME is not None:
print(i.NAME)
print(i.SystemName)
我尝试了不同的方法,例如打印输出捕获、设置值、创建变量。我不能。
df['NAME'].set_value = i.NAME
df['Systemname'].set_value = i.SystemName
输出
| NAME | SystemName |
|------|------------|
| C: | aaaaa |
| D: | bbbbb |
与其尝试为每一行附加到空数据框,不如为每一列创建数组,然后在这些列已满时使用这些列创建数据框。
names = []
systemnames = []
for i in conn.Win32_LogicalDisk():
names.append(i.NAME)
systemnames.append(i.SystemName)
df = pd.DataFrame(list(zip(names, systemnames)),columns=['NAME', 'SystemName'])
您可以使用 pd.concat
。您需要在循环的每次迭代中创建一个 DataFrame,然后将其连接到另一个原始 DataFrame。
在你的情况下:
def name():
# Create Empty DataFrame
df = pd.DataFrame(columns = ['NAME', 'Systemname'])
for i in conn.Win32_LogicalDisk():
if i.NAME is not None:
new_df = pd.DataFrame(data = [[i.Name, i.SystemName]], columns = ['NAME', 'Systemname'])
df= pd.concat([df, new_df])
如果你喜欢one-liner:
def name():
# Create Empty DataFrame
df = pd.DataFrame(columns = ['NAME', 'Systemname'])
for i in conn.Win32_LogicalDisk():
if i.NAME is not None:
df = pd.concat([df, pd.DataFrame(data = [[i.Name, i.SystemName]], columns = ['NAME', 'Systemname'])])
您可以直接构建数据框,无需任何附加等:
def name():
return pd.DataFrame(
([i.Name, i.SystemName] for i in conn.Win32_LogicalDisk()
if i.Name is not None),
columns=['NAME', 'SystemName']
)
如果您需要在函数中对数据框执行其他任务:
def name():
df = pd.DataFrame(
([i.Name, i.SystemName] for i in conn.Win32_LogicalDisk()
if i.Name is not None),
columns=['NAME', 'SystemName']
)
# ... do the tasks ...
return df