如何基於包含列名的列表創建數據框?
情況
我有一個存儲在名為 data 的變量中的列名列表:
列表數據中總共有 552 個元素。
現在我想根據這個列名列表創建一個數據框。
我以為我可以使用以下方法訪問列名後面的值:
for element in data:
print(element)
但是這種編碼只返回列名,而不返回命名列後面的值。
可以訪問列名後面的值。
解決方案:以下方法解決了我的問題。該columns
包含應該被添加到數據框的列名的列表。
data = {k: eval(k) for k in columns}
df = pd.DataFrame(data)
print(df)
看看這是否是您所需要的。如果我理解 OP 的問題,那麼 OP 的關鍵問題是如何將變量名作為字符串獲取,然後使用字符串集作為dataframe
列。
def namestr(obj, namespace):
return [name for name in namespace if namespace[name] is obj][0]
import pandas as pd
# to simulate the data you have
col1 = [1, 2, 3]
col2 = [4, 5, 6]
data = [col1, col2]
df = pd.DataFrame(data).T
df.columns = [namestr(i, globals()) for i in data]
print(df)
輸出:
col1 col2
0 1 4
1 2 5
2 3 6
或者反過來,您將列名作為列表中的字符串,然後您可以執行以下操作:
columns = ['col1','col2']
col1 = [1, 2, 3]
col2 = [3, 4, 5]
data = { k: eval(k) for k in columns }
df = pd.DataFrame(data)
print(df)
輸出:
col1 col2
0 1 3
1 2 4
2 3 5
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句