嗨,伙計們,這令人沮喪。!經過長時間的在線瀏覽。我找不到可以在這里提供幫助的單一來源。如何將不同大小的串列附加到空熊貓資料框的每一列?例如,我有這三個變數:
var1 = ['BBCL15', 'KL12TT', 'TMAA03', '1523FR']
var2 = [253, 452, 16]
var3 = ['23n2', 'akg_9', '12.3bl', '30x2', 'dd91']
我想將它附加到回圈中的空熊貓資料框:
df = pd.DataFrame(columns=['col1', 'col2', 'col3'])
# something like this.
for x in var1:
df['col1'].append(pd.Series(x), ignore_index=True)
for x in var2:
df['col2'].append(pd.Series(x), ignore_index=True)
for x in var3:
df['col3'].append(pd.Series(x), ignore_index=True)
其中每個變數對應于單個列,并用 NaN 填充空格,因為變數的長度不相同。有人可以幫忙嗎?
uj5u.com熱心網友回復:
這是使用的另一種解決方案pd.concat:
var1 = ['BBCL15', 'KL12TT', 'TMAA03', '1523FR']
var2 = [253, 452, 16]
var3 = ['23n2', 'akg_9', '12.3bl', '30x2', 'dd91']
df = pd.DataFrame()
for i in [var1, var2, var3] :
df = pd.concat([df, pd.Series(i)], axis = 1, ignore_index = True)
df.columns = ['col1', 'col2', 'col3']
注意:在使用此解決方案時,首先避免命名資料框列。
uj5u.com熱心網友回復:
>>> cols = ['col1', 'col2', 'col3']
>>> df = pd.DataFrame(columns=cols)
>>> max_len = max([len(var1), len(var2), len(var3)])
>>> for col, var in zip(cols, [var1, var2, var3]):
... df[col] = var ([None]*(max_len - len(var)))
>>> df
col1 col2 col3
0 BBCL15 253.0 23n2
1 KL12TT 452.0 akg_9
2 TMAA03 16.0 12.3bl
3 1523FR NaN 30x2
4 None NaN dd91
uj5u.com熱心網友回復:
創建一個串列串列以使用串列理解:
lists = [var1, var2, var3]
獲取最長串列的長度:
longest_length = max([len(v) for v in lists])
根據需要填充串列:
padded_lists = [v [float("NaN")]*(longest_length - len(v)) for v in lists]
創建資料框:
pd.DataFrame(padded_lists).T
uj5u.com熱心網友回復:
此外,這是一個實用的解決方案!
mydict = {'col1': var1, 'col2': var2, 'col3': var3}
df = pd.DataFrame({key:pd.Series(value) for key, value in mydict.items()})
df
col1 col2 col3
0 BBCL15 253.0 23n2
1 KL12TT 452.0 akg_9
2 TMAA03 16.0 12.3bl
3 1523FR NaN 30x2
4 NaN NaN dd91
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/383779.html
